小编Che*_*ebn的帖子

Crypto ++ pbkdf2输出与Rfc2898DeriveBytes(C#)和crypto.pbkdf2(JavaScript)不同

所以我试图使用PBKDF2来获得一个给定256位256位字符串的密钥.我能够使用C#的Rfc2898DeriveBytes和node-crypto的pbkdf2来获得相同的密钥,但是,对于C++我不能说同样的.我不确定我是否进行了错误的转换或使用不正确的功能,但我会让你们看看它.

C++

/* 256bit key */
string key = "Y1Mjycd0+O+AendY5pB58JMlmS0EmBWgjdj2r2KW6qQ=";
string decodedKey;
StringSource(key, true, new Base64Decoder(new StringSink(decodedKey)));
const byte* keyByte = (const byte*) decodedKey.data();

/* Generate IV */
/*
    AutoSeededRandomPool prng;
    byte iv[AES::BLOCKSIZE];
    prng.GenerateBlock(iv, sizeof(iv));
*/

/* FOR TESTING PURPOSES, HARDCODE IV */
string iv = "5iFv54dCRq5icQbD7QHQzg==";
string decodedIv;
StringSource(iv, true, new Base64Decoder(new StringSink(decodedIv)));
const byte* ivByte = (const byte *) decodedIv.data();

byte derivedKey[32];
PKCS5_PBKDF2_HMAC<CryptoPP::SHA1> pbkdf2;
pbkdf2.DeriveKey(derivedKey, 32, 0, keyByte, 32, ivByte, 16, 100);

/* 
 * derivedKey: 9tRyXCoQLTbUOLqm3M4OPGT6N25g+o0K090fVp/hflk=
 */
Run Code Online (Sandbox Code Playgroud)

C# …

c++ rijndael crypto++ pbkdf2 hmacsha1

6
推荐指数
1
解决办法
5094
查看次数

标签 统计

c++ ×1

crypto++ ×1

hmacsha1 ×1

pbkdf2 ×1

rijndael ×1