您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用PyCrypto AES进行Python加密

使用PyCrypto AES进行Python加密

老实说,字符 “ \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n” 在我看来并不那么随意。;-)

您正在CBC模式下使用AES。这就要求明文和密文的长度始终为16字节的倍数。使用显示代码,您实际上应该看到data传递给的异常encrypt()不满足该条件时引发了异常。看起来您已经在输入的内容添加了足够的换行符(’\ n’ ,直到明文碰巧对齐为止。

除此之外,还有两种解决对齐问题的常用方法

从CBC(AES.MODE_CBC)切换到CFB(AES.MODE_CFB)。segment_size使用PyCrypto使用的认值,您将对明文和密文长度没有任何限制。

保留CBC并使用类似PKCS#7的填充方案,即:

    length = 16 - (len(data) % 16)

data += bytes([length])*length

这就是Python 3风格。在Python 2中,您将具有:

            length = 16 - (len(data) % 16)
    data += chr(length)*length


* 解密后,从纯文本的后面删除与填充指示的一样多的字节:

            data = data[:-data[-1]]

即使我了解您的情况,这只是一个课堂练习,但我想指出的是,没有任何形式的身份验证(例如,MAC)发送数据是不安全的。

python 2022/1/1 18:48:34 有343人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶