关键词:SM4等。
1 对称加解密基础
在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。
在密码学中,分组加密(英语:Block cipher),又称分块加密或块密码,是一种对称密钥算法。它将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。分组加密是极其重要的加密协议组成,其中典型的如DES和AES作为美国政府核定的标准加密算法,应用领域从电子邮件加密到银行交易转帐,非常广泛。
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。
SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
SM3消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
SM4无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
更多参考:
《SM4.0》
《SM4加密算法原理和简单实现(java)》-SM4算法原理。
《SM4算法(python)》-SM4算法Python实现。
2 基于openssl进行加解密
SM4秘钥长度固定为128bit。
openssl enc -sm4-cbc -e -k 1234567812345678123456781234567812345678123456781234567812345678 -iv 12345678123456781234567812345678 -pbkdf2 -in infile -out cipherfile openssl enc -sm4-cbc -d -k 1234567812345678123456781234567812345678123456781234567812345678 -iv 12345678123456781234567812345678 -pbkdf2 -in cipherfile -out replain
算法和模式的组合有:
sm4-cbc SM4 cipher in CBC mode sm4 Alias for sm4-cbc sm4-cfb SM4 cipher in CFB mode sm4-ctr SM4 cipher in CTR mode sm4-ecb SM4 cipher in ECB mode sm4-ofb SM4 cipher in OFB mode