gpt4 book ai didi

Java密码加密

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:49 26 4
gpt4 key购买 nike

我正在尝试学习如何使用 Java 进行基于密码的加密。我在网上找到了几个例子,但在 Stack Overflow 上还没有。这些例子对我来说有点解释,特别是关于算法选择。似乎有很多传递字符串来说明使用什么算法,但很少有文档说明字符串的来源及其含义。而且似乎不同的算法可能需要 KeySpec 类的不同实现,所以我不确定哪些算法可以使用我正在查看的 PBEKeySpec 类。此外,这些示例似乎都有些过时,许多示例要求您获得以前不属于 JDK 甚至第三方实现的较旧的加密包。

谁能简单介绍一下我需要做什么来实现加密(字符串数据,字符串密码)和解密(字节[]数据,字符串密码)?

最佳答案

我会谨慎地提供或接受来自论坛的安全相关建议……具体细节非常复杂,而且通常很快就会过时。

话虽如此,我认为Sun的Java Cryptography Architecture (JCA) Reference Guide是一个很好的起点。查看随附的 code example说明基于密码的加密 (PBE)。

顺便说一句,标准的 JRE 只为 PBE 提供了几个开箱即用的选项(“PBEWithMD5AndDES”就是其中之一)。如需更多选择,您需要“强加密包”或一些第三方提供商,如 Bouncy Castle .另一种选择是使用 JRE 中提供的散列和密码算法实现您自己的 PBE。您可以通过这种方式使用 SHA-256 和 AES-128 实现 PBE (sample encrypt/decrypt methods)。

简而言之,PBE的加密方法可能包括以下步骤:

  1. 从用户那里获取密码和明文,并将它们转换为字节数组。
  2. 生成安全随机数 salt .
  3. 将盐附加到密码并计算其密码hash .重复多次。
  4. 使用生成的散列作为 initialization vector 加密明文和/或 secret key .
  5. 保存盐和生成的密文。

关于Java密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/372268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com