SM4分组密码算法的数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 分组密码算法只能处理特定长度的信息数据,而在实际应用中待加密的明文数据的长度是不固定的,这就需要对分组密码的算法进行迭代,将一段很长的明文全部加密,而迭代的方法就是分组模式,一次迭代运算为一轮变换...
4、SM4密码算法是一个分组算法。数据分组长度为128比特,密钥长度为128 比特。加密算法采用32 轮迭代结构,每轮使用一个轮密钥。我们在实现可用data字节的形式,即秘钥Data为16位,加密数据Data需为16的整数倍,这两点很重要。 1、ECB模式 观察第一块,和第三块,皆为明文块0,相同的输入产生相同的输出 2、CBC模式 CB...
其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。SM系类算法 SM1是一种对称加密算法,主要用于加密小数据量。它的密钥长度为128位,分组长度为128位,采用分组密码的加密方式,即将明文分为若干个长度相同的分组,每个分组进行加密运算,最后合并为密文。SM2是一种公钥加密算...
非对称加密SM2(可选支持国内SM9)算法实现数据的签名、验签和加解密对称密钥, SM3密码杂凑算法实现数据摘要的生成, 对称密钥SM4加密算法实现对数据内容的加密。
此方法进行数据加密初始化,并设置数据加密的算法相关参数。hKey是加密密钥句柄;EncryptParam是分组密码算法相关参数,包括初始向量、初始向量长度、填充方法、和反馈值的位长度。如果采用CBC模式,就需要设置初始向量等参数。5.SKF_Encrypt(HANDLE hKey, BYTE * pbData, ULONG ulDataLen, BYTE *pbEncryptedData, ULONG...
项目中包括SM2算法的加密/解密/签名/验签 , SM3算法的摘要计算 , SM4算法的对称加密/解密 , 以及相应算法的公私钥对的生成方法。 项目测试脚本使用 在项目中的test包下SecurityTestAll.java类中的main方法下有SM2/SM3/SM4的按照加解密流程实现的一整套测试脚本 , 直接直接执行可以输出如下测试结果: ...
国际上通用的对称密码算法有DES、AES等,非对称密码算法有DSA、RSA、 ECC等,杂凑算法有MD5、SHA等。我国自主研发的国密算法包括SM1、SM2、SM3、SM4、SM7、SM9和祖冲之密码算法(ZUC)等。其中SM1、SM4、SM7和祖冲之密码(ZUC)是对称密码算法,SM2和SM9是非对称密码算法,SM3是杂凑算法。国密算法与国际通用加密算法的...
* SM4算法目前只支持128位(即密钥16字节) */ private static final int DEFAULT_KEY_SIZE = 128; static { // 防止内存中出现多次BouncyCastleProvider的实例 if(null == Security.getProvider(BouncyCastleProvider.PROVIDER_NAME)) { Security.addProvider(new BouncyCastleProvider); ...
对称加密,密钥长度和分组长度均为位。可以在微信小程序中实现国密算法。 国密算法是国家密码局制定标准的一系列算法,主要有SM1,SM2,SM3,SM4,密钥长度和分组长度均为128位。其中: SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该...
SM4加解密涉及到ECB模式和CBC模式 , ECB模式简单有利于计算,但是存在被攻击的可能 , CBC模式更加安全 , 在加解密的过程中需要传入一个IV值 , 在本项目中IV值均设置为16进制下的字符串:"31313131313131313131313131313131" , 其实就是UTF-8下的16个"1" 通过getBytes[].toHexString()得来的 , 这个值可以根据需要修...