gpt4 book ai didi

c# - Php 从 C# .NET RIJNDAEL 256 解密一个字符串

转载 作者:可可西里 更新时间:2023-11-01 12:38:58 24 4
gpt4 key购买 nike

已修复。

$data = base64_decode(str_replace(' ', '+', $_GET['data']));

无论出于何种原因,Php 将 GET 变量中的 + 转换为空格

--

我正在尝试解密正在 C#.NET 中解密的字符串。

代码的结果各不相同,有几次最终的字符串有一些部分被解密,其余部分是随机字符。

大多数时候“解密”的字符串都是随机字符,我也尝试了一些 Php 函数来删除 PKCS7 填充,但没有一个能解决问题。

我在网站上查看了几个类似的问题,但没有一个有帮助。

C#

// called as Response.Redirect(url + encryptParams(param));

private string encryptData(string data)
{
Rijndael aes = Rijndael.Create();
aes.KeySize = 256;
aes.BlockSize = 256;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.Key = Convert.FromBase64String("b0dJN2c6cklVUX1qUGlFfGMweXRKbH5fSEMuXjAgfQo=");

ICryptoTransform crypto = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] txt = ASCIIEncoding.UTF8.GetBytes(data);
byte[] cipherText = crypto.TransformFinalBlock(txt, 0, txt.Length);

return "&data=" + Convert.ToBase64String(cipherText) + "&iv=" + Convert.ToBase64String(aes.IV);
}

PHP:

   $data = base64_decode($_GET['data']);
$iv = base64_decode($_GET['iv']);

echo "<br /><b>IV</b>: " . $_GET['iv'] .
"<br /><b>Encrypted String</b>: <br /><textarea>".$_GET['data']."</textarea>" .
"<br /><b>key size:</b> " . mcrypt_get_key_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC) .
"<br /><b>block size:</b> " . mcrypt_get_block_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC) .
"<br /><b>cipher:</b> " . mcrypt_get_cipher_name ( MCRYPT_RIJNDAEL_256 ) .
"<br /><b>iv size:</b> " . mcrypt_get_iv_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC) . "<br />";

echo "Result: " .
mcrypt_decrypt
(
MCRYPT_RIJNDAEL_256,
base64_decode("b0dJN2c6cklVUX1qUGlFfGMweXRKbH5fSEMuXjAgfQo="),
$data,
MCRYPT_MODE_CBC,
$iv
);

PHP 输出:

IV: WzsMlG39tfCGuX2EQM3vq8CoqGA xC0nW jICls8Cno=
key :b0dJN2c6cklVUX1qUGlFfGMweXRKbH5fSEMuXjAgfQo=

Encrypted String: oLxa21fxfQGg0EJ5rwMjEzMblvcaTq0AInDAsD88wAkNeLqOdon0ukLjz49Hpp36KPTKcTGkj1f7EPYPAAbuADnr3Ff0zpptZkx2d22VRbHrMgj QLF9vDxQRT3er3UAXsAfKKTyW8qeSIgrzACFLX3yoro/bzWic rt7ED7y0jZ7a1Hci3GMz/4KhwaftarbV QQWStJlSOqdxAdmtRRe84Vi3085S6um51bNrh5QzGRH PcpucfqaTb3junfO9g67j2JUQaM/Tj1EGnv6oX3wATR/LuWyhnhrCH86u10I=

key 大小: 32
block 大小: 32
密码: Rijndael-256
iv 尺寸: 32
结果:/ci������^/��c�g��������s��c��(��

原始字符串(JSON):{"user":"jsmith","firstName":"John","lastName":"Smith","phone":"12223334444.5555","email":"john.smith@domain.com","address":"123 Some Street","address2":"apt 456","city":"Some City","state":"LA","zip":"55555"

最佳答案

使用以下代码修复了它。

$data = base64_decode(str_replace(' ', '+', $_GET['data']));

无论出于何种原因,PHP 都将 GET 变量中的 + 转换为空格。

关于c# - Php 从 C# .NET RIJNDAEL 256 解密一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6130989/

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