什么是计算机上的解密算法?
1. Base64位加密(可加密的解密)
没有密钥的最简单的加密方式,这个方式别人拿到你的密文就能马上解密,只能用来迷惑,一般情况下不另外使用真的是不知情的~可以和其他加密方式混合在一起,作为一层外包装使用。
进口基地64
数据="abc"
#加密
M = Base64.encodestring(数据)
Printm #获取base64的值。
#解密
日期= Base64.decodestring(m)
2. MD5加密(不可逆加密)
MD5的全称是Message-DigestAlgorithm 5(Message-DigestAlgorithm 5),长度为128位,目前MD5是一种不可逆的算法,具有很高的安全性。它可以用唯一的固定长度代码来对应字符串进行加密。(提示:为什么MD5加密算法是不可逆转的--如果有加密方法,就会有解密方法?由于MD5加密是一种丢失的加密方案,就像数据是'123'一样,所以在加密时,我们认为1和3都是a,如果加密的话,它就会变成'a2 a'。因此,在解密过程中,有四个组合"323""121""123""321"。如果你有很多数据,你当然找不到原始数据。当然,加密的密文不需要解密。如果需要的话,最好直接发送原始密文~只是密文本来的内容看不到)
ImportHashlib
进口基地64
Data1 ="abc"
Data2 ='def'
哈希= hashlib.md5()
#多个文件加密多次
Hash.update(data1)
Hash.update(data2)
Value = hash.digest()
Printrepr(value)#获取二进制字符串。
Printhash.hexdigest()#获取十六进制字符串
获取Printbase64.encodestring(value)#base64的值。
3.sha1加密(不可逆加密)
SHA1的全称是安全哈希算法。SHA1基于MD5,加密数据的长度更长。它为长度小于264的输入生成160位的哈希值。它比MD5多32位。因此,虽然SHA1比MD5安全得多,但它的计算速度比MD5慢。使用方法和MD5实际上是一样的~
ImportHashlib
#一次加密单个文件
Value = hashlib.sha1('这是一个sha1测试! '). hexdigest()
打印值#获取十六进制字符串。
4. AES加密(需要密钥进行解密)
AES加密是对称密钥加密,其中加密和解密都使用相同的解密规则。AES密钥和加密块必须在矩阵中多次重复、位移和组合,这就要求加密快速字节和密钥中的字节数在一定程度上。AES密钥长度的最小支持为128、192、256,加密块分组长度为128位。这种加密模式有一个最大的弱点:甲方必须将加密规则告知乙方,否则无法解密。存储和传递密钥是最棘手的问题。
从密码学。CipherImportAES
#键必须是16,24,32位
关键字='1234567890123456'
数据="ABC"
BS = 16
#加密函数,如果文本小于16位,则用16位补充。
Pad = lambda:s+(BS-len(s)%BS)* chr(BS-len(s)%BS)
#加密
密码AES.new
Encrypted = cipher.encrypt(pad(m))
#解密
密码AES.new
Encrypted = cipher.decrypt(pad(m))
5. RSA加密(公钥加密、私钥解密)
它是目前最重要的加密算法!这是计算机通信安全的基石,确保加密数据不被黑客入侵。你可以想象信用卡交易被黑客入侵的结果。甲乙双方通信,乙方生成公钥和私钥,甲方获取公钥,加密信息;(公钥是公开的,任何人都可以获得),甲方用公钥加密信息,这时加密的信息只能破解私钥,只要私钥不泄露,就能保证信息的安全性。
进口rsa
//先生创建一对密钥以保存.pem格式的文件,当然也可以自己使用
(pubkey,privkey)= rsa.newkeys(1024)
Pub pubkey.save
Pubfile = open('public.pem','w +')
Pubfile.write(pub)
Pubfile.close()
Pri privkey.save
Prifile = open('private.pem','w +')
Prifile.write(prri)
Prifile.close()
//load公钥和密钥
消息="你好"
使用open('public.pem')作为publickfile:
P publickfile.read
Pubkey = rsa.PublicKey.load_pkcs1 §
使用open('private.pem')作为隐私:
P privatefile.read
Privkey = rsa.PrivateKey.load_pkcs1 §
//公钥加密,使用私钥解密
密码= rsa.encrypt(消息,pubkey)
消息= rsa.decrypt(crypto,privkey)
打印消息
//sign用私钥签名认真,用公钥验证签名
签名= rsa.sign(消息,私钥,'SHA-1')
Rsa.verify('hello',签名,pubkey)