python--现代密码

一、实现使用异或进行数据加密解密

原理:相同为否(0),不同为真(1)

  在代码中xor代表异或,首先获取明文与密钥的长度,并用列表保存密文,进行循环即对明文的每一位和密钥的每一位进行异或操作。密钥长度<明文长度时要循环,将字符变成数字,和密钥相应位异或,之后又将其转换成字符即可。解密为逆过程。

注意:更改密钥之后运行结果不同

二、用cryptography库验证AES加密
  首先设置密钥长度(128,192,256位)调用库, 构造密钥,创建随机数os,建立加密对象进行初始化,构造好加密对象cipher。输入加密内容,将字符串所对应数字操作,调用update ,利用base64将二进制加密内容转为文本从而显示出来。解密时创建decryptor后调用update,再用decode解码。

【实现使得在调用AES时可以输入任意长度的字符串】

  方法:AES输入长度必须是密钥长度整数倍,需计算输入内容的长度,
即在输入内容后面添加计算长度的代码(print(len(txt.encode()))),若非整数倍则用空格补齐即可。首先输入内容计算长度以及需要补的空格数,补齐空格后完成AES加解密过程。

三、验证RSA加密的过程

1.利用GenRasKey代码生成RSA的密钥对:调用cryptography库,调用generate_private_key创建RSA私钥,然后从私钥导出公钥并且将二者保存,之后得到私钥与公钥二进制对象后写入文件,从而生成RSA的密钥对。
2.利用EnRsa代码加密:打开保存的公钥并读取,将内容进行加密并用padding填充,再用base64转换成字符串。
3.利用DeRsa代码解密:复制所得字符串,粘贴到encrypted,调用私钥进行解密。
【若要在上述过程中加入MD5算法,实现消息的认证:

  首先计算消息的md5值,对消息用rsa加密得到密文,把md5,密文一块发送,对方收到消息后对消息再进行一次加密,然后得到消息摘要,比较两个md5值是否相同来确定消息有没有被篡改。】

四、使用RSA和AES混合加密:

用AES对数据进行加密,用RSA对AES的密钥进行加密,传输加密后的数据以及秘钥,对于秘钥进行解密,然后用解密后的秘钥对于数据进行解密即可得到结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值