首页 > 解决方案 > C# RijndaelManaged 加密输出错误

问题描述

  1. 我有加密和解密方法,但加密方法的输出是错误的。密钥是“u1S1t12vTeZtlRHd”,输出必须是“kJtXKmIiP9f73IZJim16LA==”(请检查解密方法),但加密方法给了我这个输出“VmmB3k7hVoKF9/cAQedaYQ==”。我该如何解决?
UTF8Encoding utf8Encoding = new UTF8Encoding();
byte[] bytes = utf8Encoding.GetBytes("u1S1t12vTeZtlRHd");
RijndaelManaged rijndaelManaged = new RijndaelManaged
{
    Key = bytes,
    Mode = CipherMode.ECB,
    Padding = PaddingMode.PKCS7
};
byte[] bytes2 = utf8Encoding.GetBytes("FAILED");
rijndaelManaged.CreateEncryptor();
byte[] inArray;
try
{
    inArray = rijndaelManaged.CreateEncryptor().TransformFinalBlock(bytes2, 0, bytes2.Length);
}
finally
{
    rijndaelManaged.Clear();
}

Console.WriteLine(Convert.ToBase64String(inArray));
byte[] array = Convert.FromBase64String("kJtXKmIiP9f73IZJim16LA==");
byte[] bytes = Encoding.ASCII.GetBytes("u1S1t12vTeZtlRHd");
ICryptoTransform transform = new RijndaelManaged
{
    Mode = CipherMode.ECB,
    Padding = PaddingMode.None
}.CreateDecryptor(bytes, null);
MemoryStream memoryStream = new MemoryStream(array);
CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Read);
byte[] array2 = new byte[checked(array.Length - 1 + 1)];
int count = cryptoStream.Read(array2, 0, array2.Length);
memoryStream.Close();
cryptoStream.Close();

Console.WriteLine(Encoding.UTF8.GetString(array2, 0, count));

标签: c#rijndaelmanaged

解决方案


推荐阅读