如何使用 OpenSSL 显示文件密钥?

如何使用 OpenSSL 显示文件密钥?

我是加密方面的新手,因此我需要一些帮助:

我正在尝试按照 MariaDB 网站上的教程创建一个 aes-256-cbc 密钥来加密我的静态数据。

它告诉我复制并粘贴的行是这样的:

enc -aes-256-cbc -md sha1 -k secret -in keys.txt -out keys.enc

在这种情况下,它返回了这个。

Salted__›­}´3`ìe›‚Å)l‘»ŽWݧ

这不是我需要的。

如果我使用打印命令,它将打印出我需要的密钥。现在密钥太长,无法手动复制,所以我需要将密钥输出重定向到文件。有人能帮我写出正确的命令来将密钥放入文件中吗?

密钥看起来与此类似:

770A8A65DA156D24EE2A093277530142

编辑:它也不允许我从 CMD 提示符中复制。

答案1

您使用的命令keys.txt使用您提供的密码()生成的密钥secret(以及随机生成的“盐”,除非您-nosalt也使用该选项)来加密文件。

我不确定你真正想要什么。如果你想让 openssl 显示从你的密码 / 生成的用于加密的密钥,你可以使用选项-p(或者-P如果你不想继续进行实际加密)。你会注意到,除非你使用 ,否则每次运行命令时密钥都会有所不同-nosalt

或者您想要的是-base64(虽然根据您展示的示例结果似乎并非如此),它将使用某种算法进一步对加密文件进行编码,以便输出为 ASCII 字符串:https://en.wikipedia.org/wiki/Base64

您可能已经注意到,如果您不希望源被“盐头”污染,那么-nosalt在使用时您可能也希望如此-base64

如果您只是想要一个随机密钥,您应该执行以下操作:

enc -aes-256-cbc -pass file:/dev/urandom -P

顺便说一句,当你使用-p/时-P,除了 a key(和 a salt),你还会看到一个iv,它代表初始化向量

相关内容