周总结(2021第25周)
[TOC]
总结一下用到的加密算法。
加密算法的总结
一、AES算法的使用
AES属于对称加密算法。
算法的输入包括加密的Key和初始化向量IV。(Key取16或32, IV取>=16)
encrpt_data = encrypt(key, iv, data)
data = decrypt(key, iv, encrpt_data)
AES 算法输出的长度
输出的大小为:
output size = ( floor(plain text size/IV size) + 1 ) * IV size
ouput size
是byte[] 数组的长度
byte[] 数组转化为Base64字符串
参考:https://manansingh.github.io/Cryptolab-Offline/c10-bits2base64.html
base64_output size = ceil(ouput size/24)*4
因为8bit无符号整型转化成base64字符串表示,每个字符占6bit,不够24bit补足0。 这样就把加密后的byte[]数组用base64字符串表示了
二、国密算法
国密算法是国家密码局认定的国产加密算法。主要有SM1,SM2,SM3,SM4。
简要介绍
-
SM1: 对称加密,不公开,需要硬件支持。
-
SM2:非对称加密,算法已经公开,基于ECC,比RSA快。
-
SM3:消息摘要,类似MD5。算法已经公开,校验结果256位。
-
SM4:无线局域网标准的分组数据算法,对称加密。
安全性
-
SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
-
SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性。SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
-
SM4算法:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。
参考:https://zhuanlan.zhihu.com/p/132352160