【问题标题】:Encrypt text with a .cer file using aes in python在 python 中使用 aes 用 .cer 文件加密文本
【发布时间】:2018-08-21 01:56:20
【问题描述】:

我有一个 .cer 文件。从其他 StackOverflow 链接我可以看到 aes 是如何使用的,但它们都提到了一个 16 字节的密钥。我怎样才能使用 .cer 文件?

编辑: 我跑了openssl x509 -inform der -pubkey -noout -in certificate_name.cer >public_key.pem 来获取公钥。这个怎么用?

我试过了:

from Crypto.Cipher import AES
from Crypto import Random
key = open('public_key.pem', 'r').read()
mode = AES.MODE_CBC
IV = Random.OSRNG.posix.new().read(AES.block_size)
AES.new(key, mode, IV=IV)

但这会引发ValueError: AES key must be either 16, 24, or 32 bytes long 错误

【问题讨论】:

    标签: python python-3.x certificate aes


    【解决方案1】:

    .cer 文件是包含公钥/私钥对和一些证书元数据的证书文件。公钥/私钥对用于非对称加密。

    AES 是一种对称加密算法。 .cer 文件仅与 AES 相关,因为它们都属于密码学的广泛主题,但 .cer 不能直接用作 AES 的密钥。

    我认为您应该在更高级别上解决您正在尝试做的事情,因为如果您尝试使用 .cer 文件作为密钥使用 AES 加密某些东西,那么就会存在一些基本的误解(而且密码学绝对不是这个地方只是把它弄乱,直到它看起来工作)

    【讨论】:

    • 感谢您查看此@user411133。我跑了openssl x509 -inform der -pubkey -noout -in certificate_name.cer >public_key.pem 来获取公钥。这个可以用吗?
    • @Projjol No. 非对称和对称是完全不同的。非对称加密有单独的加密和解密密钥,速度很慢,密钥大小一般大于1024位。并且它可以加密的数据大小被限制为小于密钥大小。对称加密只有一个密钥用于加密和解密,速度非常快,密钥大小一般为 128 或 256 位。它可以加密的数据大小是无限的。您需要做的是 1. 研究加密和 2. 在问题中添加对您要完成的任务的描述。
    猜你喜欢
    • 2014-01-18
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多