AES
高级加密标准(AES, Advanced Encryption Standard)是当今世界范围内应用最广泛的对称加密算法之一。在微信小程序加密传输等场景中,AES算法发挥着至关重要的作用。对称加密算法的特点在于加密和解密过程使用相同的密钥。具体来说,AES加密流程如下:
-
密钥选择:AES支持三种不同的密钥长度,分别是128位、192位和256位。密钥的长度决定了加密的强度和安全性。
-
初始向量(IV):除了密钥外,AES加密还需要一个初始向量(IV),用于确保即使使用相同的密钥加密相同的明文,输出的密文也会不同。
-
数据填充:由于AES算法是分组加密算法,它要求输入的数据长度必须是分组大小的整数倍。因此,如果输入数据长度不是分组大小的整数倍,就需要对数据进行填充,以满足算法的要求。
-
加密过程:使用选定的密钥和初始向量,通过一系列复杂的数学运算(如替代-置换网络),将明文数据转换为密文。
-
解密过程:解密时,使用相同的密钥和初始向量,通过相同的数学运算,将密文还原为明文。
对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
RSA
RSA加密算法是一种基于大数因式分解问题的非对称加密算法。它的安全性建立在数学难题之上,使得在没有私钥的情况下,几乎无法从公钥和密文中恢复出明文。RSA算法广泛应用于数字签名、公钥加密和密钥交换等领域。
非对称加密的特点在于使用一对密钥(公钥和私钥)进行加密和解密操作。公钥用于加密数据,而私钥用于解密数据。这种机制保证了只有持有私钥的人才能解密用公钥加密的数据,从而实现了数据的安全传输。
例如,在Alice向Bob发送加密消息的场景中,Alice会使用Bob的公钥对消息进行加密,然后将密文发送给Bob。Bob收到密文后,使用自己的私钥进行解密,从而得到原始的明文消息。
RSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广
泛的非对称加密算法。
非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用
于解密。Alice --》Bob
CRC
循环冗余校验(Cyclic Redundancy Check, CRC)是一种用于检测数据传输或保存过程中可能出现的错误的散列函数。它通过对数据块进行特定的数学运算,生成一个固定长度的校验码,并附加在数据块的末尾。接收方在收到数据后,会重新计算校验码并与发送方附加的校验码进行比对,以检测数据在传输过程中是否发生错误。
CRC算法的核心思想是利用除法及余数的原理来进行错误检测。发送方和接收方都使用相同的生成多项式进行运算,以确保计算结果的一致性。如果接收方计算出的校验码与发送方附加的校验码不匹配,则说明数据在传输过程中发生了错误。
MD5
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据映射为一个固定长度(通常为128位)的哈希值。这个哈希值通常被用作数据的“指纹”,用于验证数据的完整性和真实性。
在文件传输和存储场景中,MD5常被用来检查文件的完整性。下载文件时,通常会附带一个以.MD5为扩展名的文本文件或一行字符,这就是文件的MD5哈希值。下载完成后,用户可以使用MD5检查工具对下载的文件进行哈希计算,并将结果与提供的MD5值进行比对。如果两者一致,则说明文件在传输过程中没有发生错误或被篡改。
此外,MD5还常用于敏感信息的加密保护。例如,在网站中存储用户密码时,通常不会直接存储明文密码,而是存储密码的MD5哈希值。这样即使数据库被泄露,攻击者也无法直接获取用户的明文密码。当然,由于MD5算法存在一些已知的碰撞问题,现代系统通常会采用更安全的哈希算法(如SHA-256)或结合其他安全措施来提高安全性。