计算机基础 - 加密
1. 哈希算法
摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。(这个固定的字符串可以代表这个数据,所以叫摘要)
1.1 md5、sha1等等。另外Hmac也是hash算法,基础是md5、sha1等,还需要key。
1.2 MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
import hashlib
md5 = hashlib.md5() #调用md5算法
md5.update('allen'.encode("utf-8")) #对字符串"allen"加密
print(md5.hexdigest())
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in '.encode("utf-8"))
md5.update('python hashlib?'.encode("utf-8"))
print(md5.hexdigest())
1.3 SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。
import hashlib
sha1 = hashlib.sha1()
sha1.update('how to use sha1 in '.encode("utf-8"))
sha1.update('python hashlib?'.encode("utf-8"))
print(sha1.hexdigest())
2. 对称加密算法
2.1 加解密都用同一个密钥。
2.2 AES,需要key和IV(Initial Vector)不同的系统只要IV不同,用相同的密钥加密相同的数据得到的加密结果也是不同的。
2.3 如果加解密双方一方用Nodejs,另一方用Java、PHP等其它语言,需要仔细测试。如果无法正确解密,要确认双方是否遵循同样的AES算法,字符串密钥和IV是否相同,加密后的数据是否统一为hex或base64格式(加密后的数据格式)。