PHP pbkdf2结果与C#rfc2898derivebytes不同

PHP pbkdf2结果与C#rfc2898derivebytes不同,c#,php,C#,Php,我试图用php解密我的C#加密内容,我分步骤进行解密,以便跟踪所有内容。我从钥匙和静脉注射开始 我的C#代码: 我的PHP代码: $pass = "12345678"; $newpass = ""; $salt = "C326EBD1113438B1715AB1B5A1817"; $hasher = "SHA1"; $iterations = 1000; $keysize = 256; $ivsize = 128; $newpass = hash("sha256",mb_convert_enc

我试图用php解密我的C#加密内容,我分步骤进行解密,以便跟踪所有内容。我从钥匙和静脉注射开始

我的C#代码:

我的PHP代码:

$pass = "12345678";
$newpass = "";
$salt = "C326EBD1113438B1715AB1B5A1817";
$hasher = "SHA1";
$iterations = 1000;
$keysize = 256;
$ivsize = 128;

$newpass = hash("sha256",mb_convert_encoding($pass,"UTF-8"),true);


$out = hash_pbkdf2($hasher, $newpass, $salt, $iterations, ($keysize+$ivsize)/8, true);

$key = substr($out, 0, $keysize/8);
$iv = substr($out, $ivsize/8);


echo "hash: " .base64_encode($newpass);
echo "<br>";
echo "key: " . base64_encode($key);
echo "<br>";
echo "iv: " . base64_encode($iv);
PHP:

正如您所看到的,只有iv实际上不同,哈希和键是相同的

有人知道为什么静脉注射不同吗

更新:

替换base64_编码($iv);使用base64_编码(mb_转换_编码($iv,“UTF-8”)

给我这个iv: 35Q/QT8/P1ULZT96Tz8qFz8/P1IGdVlIPz/Ilkc/Fg==


如果我没有弄错的话,这包含了C#iv的部分内容。

你说的是加密还是散列?我不知道这里发生了什么,但是滚动您自己的PBKDF2函数肯定是非常非常坏的消息。我还没有添加加密部分,因为我正在逐步将其转换为php,以便更容易跟踪问题,PBKDF2函数就是从这里得到的:它只是返回hash_PBKDF2,所以我把它从我的帖子中删除了。在代码中使用一个比从博客帖子中抄袭的东西可能更好。
$pass = "12345678";
$newpass = "";
$salt = "C326EBD1113438B1715AB1B5A1817";
$hasher = "SHA1";
$iterations = 1000;
$keysize = 256;
$ivsize = 128;

$newpass = hash("sha256",mb_convert_encoding($pass,"UTF-8"),true);


$out = hash_pbkdf2($hasher, $newpass, $salt, $iterations, ($keysize+$ivsize)/8, true);

$key = substr($out, 0, $keysize/8);
$iv = substr($out, $ivsize/8);


echo "hash: " .base64_encode($newpass);
echo "<br>";
echo "key: " . base64_encode($key);
echo "<br>";
echo "iv: " . base64_encode($iv);
hash: 73l8gRjwLftklgfdXT+MdiMEjJwGPVMsyVxe16iYpk8=
key: WOqyVBejGMkYIwO0OafALN+U4qBBwM7sVQtlyXpPwyo=
iv: F8jyzVIGdVlIwP/IlkfPFg==
hash: 73l8gRjwLftklgfdXT+MdiMEjJwGPVMsyVxe16iYpk8=
key: WOqyVBejGMkYIwO0OafALN+U4qBBwM7sVQtlyXpPwyo=
iv: 35TioEHAzuxVC2XJek/DKhfI8s1SBnVZSMD/yJZHzxY=