python-加密算法

#!/usr/bin/python3
# coding:utf-8
# Auther:AlphaPanda
# Description: 使用hashlib模块的md5和sha系列加密算法对字符串进行加密;使用hmac模块的new方法对字符串进行加密;使用os模块的urandom方法生成指定长度的二进制字节流
# Version:1
# Date:Fri Dec  6 20:08:37 EST 2019
import hashlib
import random
# 生成一个md5对象
hs = hashlib.md5()
# 使用hs对象自带的update方法,对"abc123"字符串进行加密
hs.update("abc123".encode("utf-8"))
# 使用对象的hexdigest方法,获取加密后的字符串
print(hs.hexdigest())

# 普通的MD5加密算法加密的字符串强度不够,容易被破解。可以在加密时加上其他字符串来增强安全性
# 这个加上其他字符串的过程,俗称加盐。
# 注意:在加盐时,需要在生成对象的时候加,另外需要注意的是,加入的是字节流
hs = hashlib.md5("Michael91".encode("utf-8"))
hs.update("abc123".encode("utf-8"))
print(hs.hexdigest())

# 如果使用固定字符串加盐还不够,可以使用随机数据加密
str_new = str(random.randrange(100,10000))
hs = hashlib.md5(str_new.encode())
hs.update("abc123".encode())
print(hs.hexdigest())

# sha1加密算法
hs = hashlib.sha1()
hs.update("abc123".encode())
print(hs.hexdigest())

hs = hashlib.sha1("Michael".encode())
hs.update("abc123".encode())
print(hs.hexdigest())

# hmac加密
import hmac
key = b"abc"
msg = b"I love you"
hm = hmac.new(key,msg)
print(hm.hexdigest())

key1 = b"vmasdf"
meg1 = b"shabi"
hm = hmac.new(key1,meg1)
print(hm.hexdigest())


import os
# 随机返回指定长度得二进制字节流
key2 = os.urandom(32)
print(key,len(key))
message = b"thank you"
hm = hmac.new(key2,message)
print(hm.hexdigest())


# 使用os模块得urandom方法生成指定长度的二进制字节流
key3 = os.urandom(16)
mes1 = b"i like"
hm = hmac.new(key3,mes1)
print(hm.hexdigest())

 

posted @ 2019-12-12 16:00  日拱一卒,聚沙成塔  阅读(612)  评论(0编辑  收藏  举报