我会在论坛上提供或接受与安全相关的建议时会保持谨慎态度……具体细节非常复杂,而且通常很快就会过时。
话虽如此,我认为Sun的Java密码体系结构(JCA)参考指南是一个很好的起点。查看随附的代码示例,该示例说明基于密码的加密(PBE)。
顺便说一句,标准JRE仅提供了一些开箱即用的PBE选项(“
PBEWithMD5AndDES”就是其中之一)。要获得更多选择,您将需要“强大的加密包”或某些第三方提供商,例如Bouncy
Castle。另一种选择是使用JRE中提供的哈希和密码算法来实现自己的PBE。您可以通过SHA-256和AES-128来实现PBE(示例加密/解密方法)。
简而言之,PBE的加密方法可能涉及以下步骤:
- 从用户那里获取密码和明文,然后将它们转换为字节数组。
- 产生安全的随机盐。
- 将盐添加到密码并计算其加密哈希。重复多次。
- 使用所得的哈希值作为初始化向量和/或密钥对明文进行加密。
- 保存盐和所得密文。



