Java和Python的RSA及AES加解密对应

最近遇到了需要用Python实现RSA和AES加解密的场景,进行记录。

一、需求
1.生成一个AES秘钥
2.使用AES秘钥加密数据
3.使用RSA的公钥加密AES的秘钥
4.使用RSA的公钥加密2的数据,并且是按照每117个字节为单位分块加密
5.服务端接收到消息后,解密,返回数据
6.客户端接受到数据后,用RSA的私钥分块解密数据
7.使用RSA私钥解密服务端的AES秘钥
8.使用AES解密6的数据

二、使用到的类
其中使用的类如下:

功能 Java类 Python类
AES加密 在使用Cipher类时,需要指定一个字符串说明用的是哪种算法,历史的AES加密使用的是“AES/ECB/PKCS1Padding” 在Python里,对应的是在构造Cipher时传入参数,需要指定MODE_ECB
RSA加密 同样,RSA的串是“RSA/ECB/PKCS1Padding” 在Python里对应的是Crypto模块PKCS1_v1_5默认就是这个参数

三、一些细节

  • ECB是什么意思?

简单来说,ECB加密的时候直接加密,CBC会进行一次异或,并且密文分组像链条一样互相连接

  • AES/ECB/PKCSPadding每个段是什么意思?

algorithm/mode/padding

mode如上所说,简单理解为偏移量
padding简单理解为加密内容不足8位的时候会用0补齐需要自己实现补足逻辑

posted @ 2022-05-31 00:08  風酱  阅读(406)  评论(0编辑  收藏  举报