Windows Diffe Hellman密钥交换派生密钥

时间:2019-03-02 06:50:55

标签: windows winapi encryption cryptography aes

所以我正在Windows的OpenSSL和BCrypt函数之间进行交互。我正在QT中编写应用程序,并且只能在客户端使用BCrypt,在服务器端使用OpenSSL。我已经成功完成了DH密钥交换,我唯一遇到的问题是如何设法从共享机密中派生AES 128密钥。我用于AES 128加密的代码是https://github.com/Microsoft/Windows-classic-samples/blob/master/Samples/Security/CipherEncryptionDecryption/cpp/CipherEncryptionDecryption.cpp,在这里我将密码作为共享密钥的sha1传递。

我正在使用的PHP服务器端的代码是:

echo bin2hex(openssl_pbkdf2(sha1($shared_secret), $salt, $keylen, $iterations, 'sha256'));

迭代,盐和所有内容在客户端和服务器端都匹配。但是结果不匹配。这是什么原因呢?

1 个答案:

答案 0 :(得分:0)

您似乎在混合sha1和sha256:

...sha1($shared_secret)...'sha256'...