gpt4 book ai didi

c# - rijndael 128 cfb C# 和 php

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

我有一个问题。我有一种在 php 和 C# 中加密密码的方法,但我无法使用这两种算法获得相同的结果。有人可以帮助我吗?

PhP

<?php

$password = 'MySecretPass';
$secret = '65rgt85k89xrDAr3';
$iv = 'AAAAAAAAAAAAAAAA';


$td = mcrypt_module_open('rijndael-128', '', 'cfb','');
mcrypt_generic_init($td, $secret, $iv);

$password = mcrypt_generic($td, $password);

mcrypt_generic_deinit($td);
mcrypt_module_close($td);

$password=base64_encode($password);

echo $password;

?>

C#

var password = padString("MySecretPass");
txtEncrypt.Text = Convert.ToBase64String(EncryptStringToBytes(password,
Encoding.UTF8.GetBytes("65rgt85k89xrDAr3"),
Encoding.UTF8.GetBytes("AAAAAAAAAAAAAAAA"), PaddingMode.None));
txtEncrypt.Text = txtEncrypt.Text;


static byte[] EncryptStringToBytes(string plainText, byte[] key, byte[] iv, PaddingMode mode)
{
byte[] encrypted;

using (var rijAlg = new RijndaelManaged { Mode = CipherMode.CFB, BlockSize = 128, Padding = mode })
{
rijAlg.Key = key;
rijAlg.IV = iv;

var encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);

using (var msEncrypt = new MemoryStream())
{
using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (var swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}

private static String padString(String source)
{
char paddingChar = ' ';
int size = 16;
int x = source.Length % size;
int padLength = size - x;

for (int i = 0; i < padLength; i++)
{
source += paddingChar;
}

return source;
}

PhP 的结果是“/KNlzi/fZOERWL79”,但对于 c# 是/J643dvAR4/Gh0aYHdshNw==。我不知道为什么我的结果不同。此外,我用 Java 编写了代码,得到的结果与用 C# 编写的结果相同。

提前致谢。

最佳答案

可能是 Encoding.GetBytes(string) 返回“Unicode 编码”。这是一种实际上不存在的编码,但它返回 UTF-16。另一方面,您将 key 和 IV 视为 ASCII 字符。

因此无论 PHP 当时使用哪种编码,都会出现不匹配的情况。您应该明确定义将文本字符串转换为字节时应使用的编码,无论是在 PHP 代码中还是在 C# 代码中。

关于c# - rijndael 128 cfb C# 和 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476676/

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