[发明专利]一种基于Android端的SM4快速软件实现方法及装置有效
| 申请号: | 201911376951.8 | 申请日: | 2019-12-27 |
| 公开(公告)号: | CN111162898B | 公开(公告)日: | 2022-01-28 |
| 发明(设计)人: | 王闯;郭华;陈晨;李浩民;刘建伟 | 申请(专利权)人: | 北京航空航天大学 |
| 主分类号: | H04L9/06 | 分类号: | H04L9/06;G06F21/60 |
| 代理公司: | 重庆启恒腾元专利代理事务所(普通合伙) 50232 | 代理人: | 黎志红 |
| 地址: | 100010*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 android sm4 快速 软件 实现 方法 装置 | ||
1.一种基于Android端的SM4快速软件实现方法,其特征在于,包括:
预处理待加密或解密的文件和初始密钥;
将所述文件和密钥持久化至Android客户端的数据库并保存;
Android客户端访问所述数据库,对所述待加密或解密文件进行加密或解密;包括:
所述Android客户端通过JNI接口访问加密或解密方法;
其中,当所述Android客户端通过JNI接口访问所述加密或解密方法时,需要验证所述待加密或解密文件是否存在,验证通过后,所述加密或解密方法开始对所述文件进行加密或解密;
所述加密或解密方法开始对所述文件进行加密或解密,包括:
应用密钥扩展算法将初始密钥扩展为32个轮密钥;
应用数据编排技术对所述文件和轮密钥的存储结构进行编排处理;
应用复合域分解技术对所述编排后的数据进行32轮迭代运算;
应用所述数据编排技术对所述迭代运算后的数据进行反编排处理,加密或解密计算完成;
数据编排技术预先缓存128组128比特的数据,应用矩阵转置技术对缓存数据进行转置,实现将128组数据的同一比特聚集在同一内存块中,完成比特分离操作;
复合域分解技术使用域同构理论将S盒同构映射到复合域GF((24)2)上,将S盒的求逆运算变换到复合域上实现,之后逆映射回S盒,从而完成S盒运算;
使用NEON指令集并行实现数据编排,利用七组掩码完成比特矩阵转置,十六进制表示为:
MASK0=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
MASK1=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
MASK2=F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
MASK3=FF00FF00FF00FF00FF00FF00FF00FF00
MASK4=FFFF0000FFFF0000FFFF0000FFFF0000
MASK5=FFFFFFFF00000000FFFFFFFF00000000
MASK6=FFFFFFFFFFFFFFFF0000000000000000。
2.根据权利要求1所述的方法,其特征在于,通过选择适当的基域Q(y)和二次扩域P(x),可以将S盒的求逆运算同构映射到复合域GF((24)2)上进行,其中,
基域为:
Q(y)=y4+y3+1
二次扩域为:
P(x)=x2+x+2
同构映射矩阵为:
3.根据权利要求2所述的方法,其特征在于,所述复合域GF((24)2)上的求逆为:
令元素a=(a1*x+a0)∈GF((24)2),其中,a1,a0∈GF(24),则元素a的逆元素a-1可以表示为:
a-1=(δ-1*a1)*x+(δ-1*(a1+a0))
其中,
4.一种基于Android端的SM4快速软件实现装置,其特征在于,包括:
存储模块,用于将待加密或解密文件及密钥持久化至Android客户端的数据库并保存;
Android客户端访问所述数据库,对所述待加密或解密文件进行加密或解密;包括:
Android客户端通过JNI接口访问加密或解密方法;
其中,当所述Android客户端通过JNI接口访问所述加密或解密方法时,需要验证所述待加密或解密文件是否存在,验证通过后,所述加密或解密方法开始对所述文件进行加密或解密;加密或解密方法开始对所述文件进行加密或解密,包括:
应用密钥扩展算法将初始密钥扩展为32个轮密钥;编排模块,用于对待加密或解密文件及密钥的存储结构进行编排,实现比特分离;迭代模块,用于对编排后的待加密或解密文件进行加密或解密;
所述编排模块包括:
矩阵转置单元,使用NEON指令集作用于所述待加密或解密文件及密钥,改变所述待加密或解密文件及密钥的存储结构,实现比特分离;
迭代模块包括:
复合域运算单元,使用NEON指令集完成S盒到复合域的同构映射,并在复合域中完成所述待加密或解密文件的求逆运算后逆映射回S盒,从而完成非线性变换和线性变换;
其中数据编排技术预先缓存128组128比特的数据,应用矩阵转置技术对缓存数据进行转置,实现将128组数据的同一比特聚集在同一内存块中,完成比特分离操作;
复合域分解技术使用域同构理论将S盒同构映射到复合域GF((24)2)上,将S盒的求逆运算变换到复合域上实现,之后逆映射回S盒,从而完成S盒运算;
使用NEON指令集并行实现数据编排,利用七组掩码完成比特矩阵转置,十六进制表示为:
MASK0=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
MASK1=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
MASK2=F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
MASK3=FF00FF00FF00FF00FF00FF00FF00FF00
MASK4=FFFF0000FFFF0000FFFF0000FFFF0000
MASK5=FFFFFFFF00000000FFFFFFFF00000000
MASK6=FFFFFFFFFFFFFFFF0000000000000000。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911376951.8/1.html,转载请声明来源钻瓜专利网。





