gpt4 book ai didi

java - PBEKeySpec C++ 模拟

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:06 25 4
gpt4 key购买 nike

我以前从未使用过 C++,但现在我需要将此功能迁移到 C++:

public static byte[] getSafeKey(String key, byte[] initVector) {
KeySpec keySpec = new PBEKeySpec(key.toCharArray(), initVector,
ITERATION_COUNT, KEY_LENGTH);
SecretKeyFactory keyFactory = null;
try {
keyFactory = SecretKeyFactory
.getInstance("PBKDF2WithHmacSHA1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] keyBytes = new byte[0];
try {
keyBytes = keyFactory.generateSecret(keySpec).getEncoded();
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
SecretKey skey = new SecretKeySpec(keyBytes, "AES");

return skey.getEncoded();
}

到目前为止,我找到了一个 PBEKeySpec 模拟:http://beecrypt.sourceforge.net/doxygen/c++/classbeecrypt_1_1crypto_1_1spec_1_1PBEKeySpec.html

但即便如此,我也不知道如何处理 keyFactory 以及更远的地方。

有没有简单的C++写法?

最佳答案

对于托管代码,您可以使用错误命名的 Rfc2898DeriveBytes . RFC 2898定义 PKCS#5:基于密码的加密。此版本包括 PBKDF2 密码哈希(如果需要,或基于密码的 key 派生函数)。

对于非托管代码,似乎有 an implementation of PBKDF2 in Crypto++ .请注意,Java 版本中的散列也在 HMAC 构造中使用。 Botan也是一种选择。

请注意,Java 版本直接使用密码的 char 值的最低 8 位。因此它很可能与非 ASCII 字符的其他实现不兼容。

关于java - PBEKeySpec C++ 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684249/

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