计算机基础

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格式(加密后的数据格式)。

原文地址:https://www.cnblogs.com/allen2333/p/9068038.html