基于RSA和AES混合加密实现的加解密小工具

基于RSA和AES混合加密实现的加解密小工具闲来无事,用python的tkinter开发了一个基于RSA和AES混合加密的小小工具。总结一下使用到的知识点。首先是核心的加解密部分。采用混合加密的原因,提到这个,就得先聊下RSA和AES各自的优缺点。RSA优点安全,基于大数因式分解。而目前已破解的最高位数为1024 bit,采用2048将会很安全。且仅涉及到一次密钥传输,及将公钥随加密工具传输给使用者,私钥保留于本地,公钥即使被别人获取也没有影响。缺点加解密速度慢。由于都是大数计算,
摘要由CSDN通过智能技术生成

基于RSA和AES混合加密实现的加解密小工具

闲来无事,用python的tkinter开发了一个基于RSA和AES混合加密的小小工具。总结一下使用到的知识点。

首先是核心的加解密部分。
采用混合加密的原因,提到这个,就得先聊下RSA和AES各自的优缺点。
RSA

  • 优点
    安全,基于大数因式分解。而目前已破解的最高位数为1024 bit,采用2048将会很安全。且仅涉及到一次密钥传输,及将公钥随加密工具传输给使用者,私钥保留于本地,公钥即使被别人获取也没有影响。

  • 缺点

    1. 加解密速度慢。由于都是大数计算,RSA最快的情况也比AES慢100倍。(快速幂取模运算,中国剩余定理CRT之后再写总结
    2. 一次性只能加解密小于公共模数N的数据。例如我们采用utf8编码的汉字,一个字按3 bytes也就是24 bit算,一个2048 bit的RSA key最多只能加密2048/24差不多80字。如果要加密更长的数据,就要分组加密,无疑又放大了加解密速度慢这个缺点。

AES

  • 优点

    1. 加解密速度快。
    2. 分组长度和密钥长度设计灵活。
    3. 数据长度不限。
  • 缺点
    由于是对称加密算法,加密解密使用同一把密钥,所以密钥传输过程中存在密钥被人获取的安全隐患。

所以一般采用RSA和对称加密算法结合的方式来弥补两种算法的缺点,即在保证密钥传输过程安全性的前提下,实现既快又多地加密数据。具体实现过程是:

加密时:

  1. 随机生成一个会话密钥,或者叫过程密钥
  2. 用此会话密钥加密数据
  3. 用RSA公钥加密会话密钥
  4. 将加密的会话密钥与数据的密文拼装起来发送出去,也可以选择生成校验码一起拼装发送,以防止数据传输过程中被人篡改。

解密时:

  1. 用RSA私钥解密会话密钥
  2. 使用会话密钥解密数据,如果有带校验码,此过程需要进行校验。

上代码
mycipher.py

from Cryptodome.Cipher import AES, PKCS1_OAEP
from Cryptodome.Random import get_random_bytes
from Cryptodome.PublicKey import RSA

AES_KEY_SIZE = 16
BLOCK_SIZE = 16

def generateRSAkey():
	'''
	生成长度为2048 bit的RSA公私钥,分别存放于两个文件中
	'''
    key = RSA.generate(2048)
    private_key = key.export_key()
    file_out = open("private.pem", "wb")
    file_out.write(private_key)
    file_out.close()

    public_key = key.publickey().export_key()
    file_out = open("public.pem", "wb")
    file_out.write(public_key)
    file_out.close()


class mycipher():
    def __init__(self, rsakey):
    	
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值