所以我正在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'));
迭代,盐和所有内容在客户端和服务器端都匹配。但是结果不匹配。这是什么原因呢?
答案 0 :(得分:0)
您似乎在混合sha1和sha256:
...sha1($shared_secret)...'sha256'...