这篇文章主要介绍了Python常见的数据加密方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python常见的数据加密方式有哪些文章都会有所收获,下面我们一起来看看吧。
前言:
常见的加密算法基本分为这几类:
线性散列算法(签名算法)MD5,sha1
对称性加密算法 AES DES
非对称性加密算法 RSA
md5加密
MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)的数据。
解密
常规讲MD5是不存在解密的。但是理论上MD5是可以进行反向暴力破解的。暴力破解的大致原理就是用很多不同的数据进行加密后跟已有的加密数据进行对比,由此来寻找规律。理论上只要数据量足够庞大MD5是可以被破解的。但是要注意,破解MD5是需要考虑破解的成本(时间和机器性能)。假设破解当前的MD5密码需要目前计算能力最优秀的计算机工作100年才能破解完成。那么当前的MD5密码就是安全的。
增加破解成本的方法
使用一段无意义且随机的私匙进行MD5加密会生成一个加密串,我们暂且称之为串1
将要加密的的数据跟串1拼接,再进行一次MD5,这时会生成串2
将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据。
我们在注册账号时的密码一般都是用的MD5加密:
import hashlibh = hashlib.md5()
str = 'boboadmin'
h.update(str.encode())
msg = h.hexdigest()
print(msg)
SHA1安全哈希算法
SHA1比MD5的安全性更强,但也比MD5慢
import hashlib
sha1 = hashlib.sha1()
data = '2333333'
sha1.update(data.encode('utf-8'))
sha1_data = sha1.hexdigest()
print(sha1_data)
Base64伪加密
Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已。
Base64使用A–Z,a–z,0–9,+,/ 这64个字符实现对数据进行加密。
import base64
str='admin'
str=str.encode('utf-8')
#加密
bs64=base64.b64encode(str)
print(bs64)
#解密
debs64=base64.b64decode(bs64)
print(debs64.decode())
DES/AES
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的算法。该加密算法是一种对称加密方式,其加密运算、解密运算需要使用的是同样的密钥(一组字符串)即可。
注意:
现在用AES这个标准来替代原先的DES。
AES和DES的区别
加密后密文长度的不同:
DES加密后密文长度是8的整数倍
AES加密后密文长度是16的整数倍
应用场景的不同:
破解方法
#需要下载安装pyDes模块
import binascii
from pyDes import des, CBC, PAD_PKCS5
def des_encrypt(secret_key,s):
iv = secret_key
k = des(secret_key,CBC,iv,pad=None,padmode=PAD_PKCS5)
en = k.encrypt(s,padmode=PAD_PKCS5)
return binascii.b2a_hex(en)
def des_decrypt(secret_key, s):
iv = secret_key
k = des(secret_key,CBC,iv,pad = None,padmode = PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s),padmode = PAD_PKCS5)
return desecret_str = des_encrypt('12345678', 'I love YOU~')
print(secret_str)
clear_str = des_decrypt('12345678', secret_str)
print(clear_str)
RSA
RSA加密:
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。
非对称加密算法
非对称加密算法需要两个密钥:
注意:
使用流程和场景介绍
公钥私钥生成方式
公私匙可以在线生成:
import rsa
def rsaEncrypt(str):
(pubkey,privkey)=rsa.newkeys(512)
print("pub:",pubkey)
print("priv:",privkey)
content =str.encode('utf-8')
crypto=rsa.encrypt(content,pubkey)
return (crypto,privkey)
def rsaDecrypt(str,pk):
content = rsa.decrypt(str,pk)
con=content.decode('utf-8')
return con
(deData,privKey)=rsaEncrypt("hello")
print('加密后的密文',deData)
content = rsaDecrypt(deData,privKey)
print(content)
关于“Python常见的数据加密方式有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python常见的数据加密方式有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注天达云行业资讯频道。