当前位置: 首页 > 知识库问答 >
问题:

如何在openssl/OSX中制作AES-256密钥对

慕学海
2023-03-14

我需要生成一个密钥对并将公钥提供给某人。他们说需要:

  • AES-256 CBC 128位块大小
  • 16b固定长度的随机初始化Victor IV
  • PKCS7填料

我甚至不知道这些是否是默认值,甚至我不知道我是否在正确的地方询问。如何制作这样的密钥?

共有1个答案

姚树
2023-03-14

您的要求不可能正确。AES是一种对称算法,这意味着双方应该拥有相同的密钥。密钥对是为非对称加密(如RSA)生成的。

大多数情况下,AES和RSA一起用于加密。这被称为混合加密:生成一个随机的AES密钥并用于加密明文。然后用RSA公钥加密AES密钥(例如,使用OAEP填充)。然后将得到的密文和加密的密钥发送给另一方,后者可以使用私钥解密AES密钥,然后使用AES密钥解密密文。

如果您只需要提供密钥,则必须使用安全传输。AES 密钥可以是 256 位安全随机密钥,可以很容易地从 /dev/urandom 中提取,例如:

dd bs=1 count=32 if=/dev/urandom of=aes-256-key.bin

例如,对于RSA,使用openssl命令行。

 类似资料:
  • 注意,这只提供salt和密码,openssl应该自动处理key和IV。我是不是太乐观了,当浏览器解密时也会发生这种情况?如果可能的话,我希望只使用那些加密设置,或者增加的复杂性最小。在浏览器中,我正在尝试使用CryptoJS解密,如下所示: 但使用的属性“0”,。cryptojs.aes.decrypt的文档很薄,我知道在调用该函数时要更改的任何设置似乎都会给出相同的错误。感谢任何一个能发光的人!

  • 我正在尝试将aes-128-cbc加密与openssl一起使用,我希望密钥需要32位。但是,我注意到当我输入密钥长度为18时,openssl不会给我错误。 但是,如果我在密钥后添加0,直到它是32位,我仍然会得到相同的结果。 有文档说OpenSSL给键添加了填充吗? 编辑:我需要在代码中重现此行为。我得到了密钥,但不能保证密钥是多少位数。

  • 如何使用PHP安全地生成适用于AES 256哈希数据的密钥? 我尝试过谷歌搜索,找到了大量关于如何使用PHP使用AES 256加密数据的信息,但是所有这些示例都使用了现有的预生成密钥,而我需要在PHP中生成密钥。

  • 我做了一个简单的文件加密/解密器。它将模式和要操作的文件作为参数。加密时,它生成随机字符串并使用该字符串加密文件。解密文件时,它会提示用户输入密码,并在解密时使用该密码。 我的问题是,解密时得到的不是明文,而是胡言乱语,尽管我小心翼翼地将相同的密钥写入输入。 非常感谢James K Polk提供的加密/解密代码!

  • 我正在尝试解密一个文本,它是用AES-256-ECB用给定的密钥加密的。为了解密,Im使用了用于加密的相同版本的openssl(openssl 1.1.1d,2019年9月10日)。 我试过这些命令: 我得到的是:。有什么问题?

  • 我希望有一个用C编写的程序,可以在没有openssl这样的大型库的帮助下,用AES-CBC对字符串进行编码/解码。 目标: 使用密码短语对字符串进行编码/解码: 因此,应用程序需要接受3个输入参数。。。 输入字符串(待编码)/或已编码字符串(待解码) 用于编码/解码字符串的密码 编码或解码指示器 我对C语言不熟悉(我可以用C#编码)。 我已经找到了https://github.com/kokke/