加密算法类型
加密算法类型可以分为非对称加密和对称加密,以及不需要密钥的散列算法。
对称加密算法加密和解密所用的密钥相同,所以要求加密方和解密方事先先知道密钥。
非对称加密算法加密和解密的密钥不同,非对称加密算法需要两个密钥,一个是公钥、一个是私钥。如果使用公钥进行加密,那么只能使用私钥进行解密,反之要用公钥解密。
对称加密算法有:DES、3DES、AES
非对称加密算法有 :RSA、DSA
散列算法:SHA-1、MD5
加密算法详解
DES算法
DES算法是一种分组算法,以64位为分组对数据加密,密钥长度为56位。想要破解DES算法只能通过穷举密钥,需要2的56次方运算次数。
DES加密过程比较复杂,大致可以分为以下几步:
IP置换:明文数据按照初始置换表(IP表)进行置换,得到一个乱序的64位数据,并分成两部分
16轮迭代加密:每一轮进行密钥置换、扩展置换(E扩展置换)、S盒代替、P盒置换、异或运算、左右交换
逆置换:将16轮迭代后的64位数据按照逆初始置换表进行置换,得到最终的64位密文
3DES算法
加密算法与DES算法一致,不过在加密每一块数据块时,会使用3个不同的密钥进行三次加密,安全性比DES算法更高。
AES算法
美国联邦政府采用的区块加密标准,密钥长度支持 128
位、 192
位、256
位,分组长度为 128
位。
算法机密过程:
密钥扩展:根据输入的密钥长度(128位、192位或256位)进行密钥扩展,生成多个轮密钥
初始轮密钥加:将明文(或上一轮的密文,在首轮时)与初始轮密钥进行异或运算,作为加密轮次的初始输入
多轮加密:字节替换、行移位、列混合(除最后一轮外)和轮密钥加。
AES算法通过轮函数和轮密钥的组合,实现了高效且安全的数据加密和解密过程。
RSA加密算法
RSA
加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
密钥生成
- 随机选择两个大的不相等的质数p和q。
- 计算乘积n = p * q,n的长度就是密钥的长度。
- 计算欧拉函数φ(n) = (p - 1) * (q - 1),其中φ是欧拉函数,表示小于n且与n互质的正整数的个数。
- 随机选取一个小于φ(n)的整数e,使得e与φ(n)互质(即它们的最大公约数为1)。
- 计算e关于φ(n)的模逆元d,即找到一个整数d,使得e * d ≡ 1 (mod φ(n))。
- 公钥为(e, n),私钥为(d, n)。
加密
- 假设m是要加密的明文消息(在实际应用中,通常需要将明文转换为正整数)。
- 计算密文c = m^e mod n。
- 将密文c发送给接收方。
解密
- 使用私钥(d, n)对密文c进行解密,计算m = c^d mod n。
- 将解密后的m转换回原始的明文消息格式(如果之前进行了转换)。
国密算法
- SM1:一种分组对称加密算法,其分组长度和密钥长度均为128位。该算法的安全保密强度与AES相当,但算法本身不公开,仅以IP核的形式存在于芯片中。
- SM2:基于椭圆曲线密码的公钥密码算法,是一种非对称加密算法。其安全强度高于RSA算法,且在签名速度和密钥生成速度上具有优势。SM2算法包含数字签名、密钥交换和公钥加密等功能,可满足电子认证服务系统等应用需求。
- SM3:一种密码杂凑算法,用于替代MD5/SHA-1/SHA-2等国际算法。SM3算法的安全性及效率要高于MD5算法和SHA-1算法,与SHA-256相当。它主要用于数字签名及验证、消息认证码生成及验证、随机数生成等场景。
- SM4:一种分组对称加密算法,用于替代DES/AES等国际算法。SM4算法与AES算法具有相同的密钥长度和分组长度,均为128位。该算法在加密过程中使用的算法与解密过程中使用的算法完全相同,唯一不同点在于解密密钥是由加密密钥进行逆序变换后得到的。
- SM7:一种分组加密算法,其分组长度和密钥长度均为128位,但算法本身未公开。该算法适用于非接IC卡应用,包括身份识别类应用(如门禁卡、工作证、参赛证)、票务类应用(如大型赛事门票、展会门票)以及支付与通卡类应用(如积分消费卡、校园一卡通、企业一卡通、公交一卡通)。
- SM9:基于标识的非对称加密算法,用椭圆曲线对实现的基于标识的数字签名算法、密钥交换协议、密钥封装机制和公钥加密与解密算法。该算法包括数字签名生成算法和验证算法,并给出了相应的流程。