【发布时间】:2013-03-25 06:35:26
【问题描述】:
我想知道这个命令(mvn --encrypt-master-password)使用的算法或技术。每次我运行它都会产生不同的输出。我假设它需要系统时间作为种子参数。
【问题讨论】:
标签: maven password-protection password-encryption password-generator
我想知道这个命令(mvn --encrypt-master-password)使用的算法或技术。每次我运行它都会产生不同的输出。我假设它需要系统时间作为种子参数。
【问题讨论】:
标签: maven password-protection password-encryption password-generator
加密机制本身不在 maven 代码库中。它位于名为plexus-cipher 的库中。它总是在 Maven 发行版上。我的是 lib/plexus-cipher-1.7.jar 是 3.0.5 maven 版本。
实际密码是AES/CBC/PKCS5Padding。用于块链接的密码和 IV 的密钥是在提供的密码(编码为 UTF-8)上迭代 SHA-256-ing 并与特定于 JVM 配置(通常为 SHA1PRNG)的 64 位随机盐连接一次或两次。
这里没有什么大惊喜。它似乎是现在每个其他灵魂都在使用的相同格式。
血淋淋的细节可以在GitHub project page上阅读源代码
【讨论】:
NativePRNG 初始化自己,从/dev/random 读取其种子,这导致了性能混乱。我不知道后备SHA1PRNG 使用了哪些系统资源。