python里面常用的加密技术

背景介绍

  • 借助hashlib、hmac、base64 实现编码加密
    python实现 应用 base64、hmac、hashlib包实现:md5编码 sha1编码 sha3_224编码 sha3_256编码
    sha3_384编码 sha3_512编码 、 sha224编码 、 sha384编码 、 sha512编码 、shake_128编码 、
    shake_256 编码 、urlsafe_b64encode编码等各种编码加密签名的方法
    在Python3中,md5模块和sha模块都被合并到hashlib模块中去了

hashlib

  • hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法接口,如SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。
    其中
    hash.digest()
    返回摘要,作为二进制数据字符串值
    hash.hexdigest()
    返回摘要,作为十六进制数据字符串值
import hashlib
user = 'xiaoran'
user = user.encode(encoding='utf-8')
user_MD5 = hashlib.md5(user).hexdigest()
print("user_md5:", user_MD5)

## hashlib的编码:md5 sha1 sha3_224 sha3_256 sha3_384 sha3_512 sha224 sha384 sha512 shake_128 shake_256
print('hashlib md5:', hashlib.md5(user).hexdigest())
print('hashlib sha1:', hashlib.sha1(user).hexdigest())
print('hashlib sha3_224:', hashlib.sha3_224(user).hexdigest())
print('hashlib sha3_256:', hashlib.sha3_256(user).hexdigest())
print('hashlib sha3_384:', hashlib.sha3_384(user).hexdigest())
print('hashlib sha3_512:', hashlib.sha3_512(user).hexdigest())
print('hashlib sha384:', hashlib.sha384(user).hexdigest())

Base64

print('=====================Base64 编码=========================')
import base64
base64_string = 'hello world'
bytesString = base64_string.encode(encoding='utf-8') ###转换成bytes String
base64String = base64.b64encode(bytesString)
print('base64string:',type(base64String), base64String)  # 这个时候base64String 是byte型的,需要转化为str

Stringbase64 = base64String.decode()  ##转换成string
print('base64转换成string:', type(Stringbase64), Stringbase64)


##Base解码

unbase64String = base64.b64decode(base64String)
print("base64解码", type(unbase64String), unbase64String) ###bytes 类型
print("base64解码", type(unbase64String.decode()), unbase64String.decode())  ###string 类型

hmac

  • hmac算法(Keyed-Hashing for Message Authentication)通过一个标准算法在计算哈希的过程中,把key混入计算过程中
    和我们自定义的加salt算法不同,Hmac算法针对所有哈希算法都通用,无论是MD5还是SHA-1;采用Hmac替代我们自己的salt算法,可以使程序算法更标准化,也更安全(说到底就是——加盐~实现key的哈希~)
msg = "白茶清欢无别事"
msg = msg.encode(encoding='utf-8')
secret = "我在等风也在等你"
secret = secret.encode(encoding='utf-8')
print(type(msg), msg)
print(type(secret), secret)

h = hmac.new(msg, secret, digestmod='md5')
h = h.hexdigest()
print("hmac加密结果:", h)

你可能感兴趣的:(python)