Java相当于C#的Rfc2898DerivedBytes

El *_*Che 6 c# java encryption algorithm rfc2898

我想知道是否有人试图做相同的

Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(secret, saltValueBytes);
byte[] secretKey = key.GetBytes(16);
Run Code Online (Sandbox Code Playgroud)

在Java中.其中secret是字符串(密码),而saltValueBytes是字节数组中的salt.

我尝试了一些东西,但似乎无法绕过它.

And*_*are 5

我通过谷歌搜索找到了这个实现,但我从未使用过它。

RFC 2898 / PKCS#5 PBKDF2 的免费 Java 实现

似乎没有可用的 RFC 2898 / PKCS#5 的小型且免费的 Java 实现。小到只有几个源文件,编译简单,没有依赖,像 LGPL 一样免费。

鉴于标准 SUN JCE 加密提供程序中 HMacSHA1 的可用性,这样的实现非常简单,可以从字面上的 RFC 描述中推导出来。我的代码是一个洁净室实现,仅以 RFC 为基础。


Syo*_*yon 5

我知道这是游戏的后期,但Java 6及更高版本确实有内置的PBKDF2实现.

int dkLen = 64;
int rounds = 1000;
PBEKeySpec keySpec = new PBEKeySpec("Some password".toCharArray(), "SomeSalt".getBytes(), rounds, dkLen * 8);
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
byte[] out = factory.generateSecret(keySpec).getEncoded();
Run Code Online (Sandbox Code Playgroud)

Java 6安全增强功能列表声称与PKCS#5具有可比性,并且通过我自己的(粗略)测试,它确实产生了正确的PBKDF2密钥.