python密码加密的几种方式,python实现加密器
本文主要分享Python常用的几种数据加密方法,包括线性哈希算法(签名算法)MD5,sha1,对称加密算法AESDES,非对称加密算法RSA。具体细节介绍,需要的小伙伴可以参考一下。
00-1010一、增加破解成本的md5加解密方法SHA1安全哈希算法二。Base64伪加密III。DES/AESAES和DES差分破解方法IV。RSA非对称加密算法使用过程及场景介绍公钥和私钥生成方法前言:
常见的加密算法基本分为这几类:
线性哈希算法(签名算法)MD5,sha1对称加密算法AES DES非对称加密算法RSA
目录
MD5是一种广泛使用的线性哈希算法,可以生成128位(16字节)的哈希值,保证信息传输的完整性和一致性。MD5加密产生固定长度(32位或16位)的数据。
一、md5加密
一般来说,MD5没有解密。但理论上MD5是可以被反向暴力破解的。暴力破解的一般原理是对很多不同的数据进行加密,然后对比已有的加密数据,从而找到规律。理论上,只要数据量足够大,MD5是可以被破解的。但是需要注意的是,要考虑破解MD5的成本(时间和机器性能)。假设计算能力最强的计算机破解目前的MD5密码需要100年。那么当前的MD5密码是安全的。
解密
用一个无意义的随机私钥对MD5加密,会生成一个加密字符串,暂时称为string 1。
要加密的数据与字符串1拼接,再次进行MD5,就会生成字符串2。
再次用MD5加密字符串2,生成的字符串3就是我们加密的数据。
我们在注册账号时的密码一般都是用的MD5加密:
导入hashlibh=hashlib.md5()
str=boboadmin
h.update(str.encode())
msg=h.hexdigest()
打印(邮件)
增加破解成本的方法
SHA1比MD5更安全,但也比MD5慢。
导入hashlib
sha1=hashlib.sha1()
数据=2333333
sha1.update(data.encode(utf-8 ))
sha1_data=sha1.hexdigest()
打印(sha1_data)
SHA1安全哈希算法
Base64是一种用64个字符表示任意二进制数据的方法。Base64是一种编码方法,而不是加密算法。只是看起来像加密。
Base64使用64个字符az、az、09、/来加密数据。
导入base64
str=admin
str=str.encode(utf-8 )
#加密
bs64=base64.b64encode(str)
打印(bs64)
#解密
debs64=base64.b64decode(bs64)
print(debs64.decode())
二、Base64伪加密
DES被称为数据加密标准,即数据加密标准,是一种使用密钥加密的算法。加密算法是一种对称加密方法,加密和解密需要相同的密钥(一组字符串)。
注意:
现在AES是取代原始DES的标准。
/blockquote>
AES和DES的区别
加密后密文长度的不同:
- DES加密后密文长度是8的整数倍
- AES加密后密文长度是16的整数倍
应用场景的不同:
- 企业级开发使用DES足够安全
- 如果要求高使用AES
- 使用DES/AES进行数据交互时要求双方都拥有相同的私匙
破解方法
- 暴力破解
- DES如果使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。只要计算足够强大是可以被破解的
#需要下载安装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被广泛使用。
非对称加密算法
非对称加密算法需要两个密钥:
- 公开密钥(publickey:简称公钥)
- 私有密钥(privatekey:简称私钥)
- 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
注意:
- 使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。
- 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
使用流程和场景介绍
- 通过公匙加密,使用私匙解密。私匙是通过公匙计算生成的。假设ABC三方之间相互要进行加密通信。大家相互之间使用公匙进行信息加密,信息读取时使用各自对应的私匙进行信息解密
- 用户输入的支付密码会通过RSA加密
公钥私钥生成方式
公私匙可以在线生成:
[http://web.chacuo.net/netrsakeypair]
import rsadef 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 数据加密内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。