DES、AES和RSA加密算法
DES加密算法简介
DES(Data Encryption Standard)是⽬前最为流⾏的加密算法之⼀(它是分组密码)。
强加密使⽤的基本操作 -> 混淆与扩散
混淆:是⼀种使密钥与密⽂之间的关系尽可能的模糊的加密操作。
常⽤的⼀个元素就是->替换;在DES和AES中都有使⽤
扩散:是⼀种为了隐藏明⽂的统计属性⽽将⼀个明⽂符号的影响
扩散到多个密⽂符号的加密操作。
最简单的扩散元素就是->位置换;它常⽤与DES中,AES⽤更⾼级的Mixcolumn操作
DES是⼀种使⽤56位密钥对64位长分组进⾏加密的密码
56+8奇偶校验位(第8,16,24,32,40,48,56,64)= 64位的密钥对以64位为单位的块数据进⾏加解密。
DES是⼀种对称密码,即其加密过程和解密过程使⽤相同的密钥。
与所有的现代分组加密⼀样,DES也是⼀种迭代算法。
DES对明⽂中每个分组的加密过程都包含16轮(每轮操作相同)柳生十兵卫
每轮都会使⽤不同的字密钥,所有⼦密钥都是从主密钥中推导⽽来
python实现DES加密与解密
AES加密算法简介
⾼级加密标准(AES)是⼀个对称分组密码算法,旨在取代DES成为⼴泛使⽤的标准。
根据使⽤的密码长度,AES最常见的有3种⽅案,⽤以适应不同的场景要求,分别是AES-128、AES-192和AES-256。3种的思路基本⼀样,只是轮数会适当增加
AES加密过程涉及到4种操作:
字节替代(SubBytes)、⾏移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)
解密过程分别为对应的逆操作。
python实现AES加密与解密
#coding=utf-8
关于党的诗#PyCrypto的开发⼯作于 2012 年就已停⽌,有⼀个该项⽬的分⽀ PyCrytodome 取代了它
from Crypto.Cipher import AES
from Crypto.Util import Counter #CTR密码模式计数器功能
from Crypto import Random #⽤来⽣成随机数
import binascii #包含⽤C语⾔编写的低级函数
#pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16)
关于周末的作文
#匿名函数,不⽤return ⾃动返回
flag = 'AES-test-wintryc'
key = _random_bytes(16) #⽣成密钥,返回长度为16的随机字符串
print ('随机密钥:'+str(binascii.b2a_hex(key)))#返回⼆进制数据的⼗六进制表⽰。这⾥输出了随机⽣成的密钥
#数据的每个字节都转换为相应的2位⼗六进制表⽰。因此,结果字符串的长度是数据长度的两倍
prefix = _random_bytes(4)#固定前缀,返回长度为n的随机字符串,这⾥n=4
# print('prefix:'+prefix)
suffix = _random_bytes(4)#固定后缀
# print('suffix:'+suffix)
def enc(plaintext):
count = w(64, prefix=prefix, suffix=suffix) #实例化CTR密码对象
cipher = w(key, AES.MODE_CTR, counter=count)#以⼤端模式编码的计数器字段
#print('text'+binascii.hexlify(pad(plaintext)))#返回⼆进制数据的⼗六进制表⽰
pt(plaintext)#返回加密结果
def dec(ciphertext,key):
count = w(64, prefix=prefix, suffix=suffix) #实例化CTR密码对象
cipher = w(key, AES.MODE_CTR, counter=count)#以⼤端模式编码的计数器字段
return cipher.decrypt(ciphertext)
if __name__ == "__main__":
走过才明白de('utf-8')
text = enc(plaintext)
兔鼠相配婚姻会怎么样#print(type(text))
print ('加密结果:'+str(binascii.b2a_hqx(enc(plaintext))))
print ('解密结果:'+str(dec(text,key))+'\n')美职棒
感性的男人RSA加密算法概述
RSA算法⼀直是最⼴为使⽤的"⾮对称加密算法"。
毫不夸张地说,只要有计算机⽹络的地⽅,就有RSA算法
这种算法⾮常可靠,密钥越长,它就越难破解
幼儿园语言游戏python实现RSA算法