Python数据加密方式有几类,具体是怎样
Admin 2022-08-12 群英技术资讯 712 次浏览
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比MD5的安全性更强,但也比MD5慢
import hashlib sha1 = hashlib.sha1() data = '2333333' sha1.update(data.encode('utf-8')) sha1_data = sha1.hexdigest() print(sha1_data)
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全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的算法。该加密算法是一种对称加密方式,其加密运算、解密运算需要使用的是同样的密钥(一组字符串)即可。
注意:
现在用AES这个标准来替代原先的DES。
加密后密文长度的不同:
应用场景的不同:
#需要下载安装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被广泛使用。
非对称加密算法需要两个密钥:
注意:
- 使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。
- 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
公私匙可以在线生成:
[http://web.chacuo.net/netrsakeypair]
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)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python实现一般游戏的自动点击,本文给大家分享具体操作代码及需要的软件,需要的朋友可以参考下
这篇文章主要介绍了Python 中的反转字符串reversed(),切片 ,以相反的顺序反转和处理字符串可能是编程中的一项常见任务。Python 提供了一组工具和技术,可以帮助我们快速有效地执行字符串反转,下面来看看具体内容吧
这篇文章主要介绍了pytorch中Schedule与warmup_steps的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
当我们提到一门编程语言的效率时:通常有两层意思,第一是开发效率,这是对程序员而言,完成编码所需要的时间;另一个是运行效率,这是对计算机而言,完成计算任务所需要的时间。编码效率和运行效率往往是鱼与熊掌的关系,是很难同时兼顾的。
逼近多边形是某个图像轮廓的高度近似,而凸包的提出是为了简化逼近多边形的。其实,凸包跟逼近多边形很像,只不过它是物体最外层的“凸”多边形。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008