在 websphere liberty sever.xml 中对密码进行 AES 加密的情况下,如果在 securityUtility 命令中使用默认密钥,则表示未在 server.xml 中设置 wlp.password.encryption.key 来覆盖默认密钥,则为默认密钥aes 密钥保存在任何配置文件的任何位置,或者密钥被隐藏,无论如何都要找到默认密钥。我问这个问题是因为之前工作的人,使用默认的 aes 密钥在我们的开发环境中加密了密钥,现在我需要解密这些密钥以检查某些密码的正确性。 谢谢
默认的 aes 编码密钥不存储在任何配置文件中。我建议您编写一些在没有指定编码密钥的 Liberty 服务器中运行的代码,而不是担心默认编码密钥是什么,或者如何定义加密密钥以及 aes 块的格式PasswordUtil 解码方法对其进行解码。
默认 AES 密钥(和 IV)是
85695627a8bb6df42227a2a17b021d84
。
您可以通过解密从第二个字节开始的数据并跳过解密输出中的
n
字节来解密密码,其中 n
编码在第一个字节中(在我的情况下始终为 22 字节):
key=85695627a8bb6df42227a2a17b021d84
securityUtility encode --encoding=aes foobar
# AOqEBz6IeHwNdt1Wq1J22BO3RWP6hFRRGwLg5xAlcRei
echo -n 'AOqEBz6IeHwNdt1Wq1J22BO3RWP6hFRRGwLg5xAlcRei' \
| base64 -d \
| tail -c +2 \
| openssl aes-128-cbc -d -K $key -iv $key \
| tail -c +22
# foobar