私はこの関数をC#で書き直そうとしています。しかし、C#の出力は、あなたのC#コードでPHPC#でのMCRYPT_RIJNDAEL_128の暗号化
PHPのバージョン
// Encrypt data using AES128-cbc
function encrypt($data, $key, $iv) {
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$multipass = mcrypt_generic($cipher, $data);
mcrypt_generic_deinit($cipher);
return $multipass;
}
C#バージョン
public static string encrypt(string encryptionString, string iv, string key)
{
byte[] clearTextBytes = Encoding.UTF8.GetBytes(encryptionString);
var rijn = SymmetricAlgorithm.Create();
rijn.KeySize = 128;
rijn.Mode = CipherMode.CBC;
var ms = new MemoryStream();
var cs = new CryptoStream(ms, rijn.CreateEncryptor(Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv)), CryptoStreamMode.Write);
cs.Write(clearTextBytes, 0, clearTextBytes.Length);
cs.Close();
var tmp = Encoding.UTF8.GetString(ms.ToArray());
return tmp;
}
は、なぜあなたはそれらの' CryptoStream' + 'MemoryStream'フープを介してジャンプします.TransformFinalBlock'? – CodesInChaos
これを動作させようとしている他の人には、PaddingMode.Zeros(以下のSyonの答え)が私にとっての解決策でした。 –