gpt4 book ai didi

c# - C# 和 PHP 上的 Blowfish 加密产生不同的结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:24 37 4
gpt4 key购买 nike

我正在尝试进行 Blowfish 加密,但解密 C# 加密代码的结果并不相同。我在 C# 中使用了这个库: https://defuse.ca/source/blowfish.cs和这个自写的加密代码:

$td = MCRYPT_BLOWFISH;
$iv_size = mcrypt_get_iv_size($td, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

echo "Original data: $data<br />";

$encrypted_data = mcrypt_encrypt($td, $blowfish_key, $dec, MCRYPT_MODE_CBC, $iv);

echo "Encrypted data: " . bin2hex($encrypted_data) . "<br />";
$x ="1e9a532f6391071e04ac46dfd4ffa1e324665ef7f1e75b8c2ea6ebabd75fd04d8"; //result from C#
$data = mcrypt_decrypt($td, $blowfish_key, $x /*$encrypted_data*/, MCRYPT_MODE_CBC, $iv);

echo trim($data);

谁能帮我解决这个问题?提前致谢。CH

最佳答案

您的 PHP 代码中有 2 个问题:

首先:mcrypt 需要二进制数据……没有带十六进制编码字节的字符串……(hex2bin() 或 pack() 将为您转换)

第二:IV ...你的 blowfish.cs 为你生成一个随机 IV,并将它(8 个字节)放在密文前面......而你的 php 代码生成一个新的随机 IV,它不适用于解密

建议:

c#

var fish = new BlowFish("0000000000000000");
var cs_output=fish.Encrypt_CBC("This is a test of the blowfish.cs file");

PHP

$cs_output="27c7c634ead1d28bfe64821a28ef909311e1f655150f24eec27abff1376a7a8712e7962fdbb0150bfc0882078cb99e67";

$iv=pack("H*" , substr($cs_output,0,16));
$blowfish_key=pack("H*" , "0000000000000000"); // key in this example is all zero
$x =pack("H*" , substr($cs_output,16));
$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $blowfish_key, $x , MCRYPT_MODE_CBC, $iv);

关于c# - C# 和 PHP 上的 Blowfish 加密产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421611/

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