C# 加解密错误
我有一个相当简单的加密和解密代码。但是,当我加密然后解密时,输出不是我最初输入的 这是加密:C# 加解密错误,c#,encryption,C#,Encryption,我有一个相当简单的加密和解密代码。但是,当我加密然后解密时,输出不是我最初输入的 这是加密: static byte[] Encrypt(SymmetricAlgorithm aesAlg, string plainText) { ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msEncrypt = new M
static byte[] Encrypt(SymmetricAlgorithm aesAlg, string plainText)
{
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return msEncrypt.ToArray();
}
}
}
解密:
static string Decrypt(SymmetricAlgorithm aesAlg, byte[] cipherText)
{
ICryptoTransform decryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
主要内容:
输出应为:
Original: My secret data!
RoundTrip: My secret data!
然而,结果是:
Original: My secret data!
RoundTrip: ">�����6dB&JD䮦�L�ܹ�SKo\v*.�"
或者像那样有趣的事情
我在网上找不到任何有用的东西。非常感谢您的任何建议。问题在于,在您的
解密
方法中,您创建了另一个加密程序,而不是解密程序
如果你换线
aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
到
然后您将获得解密文本。解密代码
static string Decrypt(SymmetricAlgorithm aesAlg, byte[] cipherText)
{
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
使用aesAlg.CreateDecryptor(aesAlg.Key,aesAlg.IV);对于decryptionSo,这是一个输入错误的问题,因此应该关闭。可能与So重复,除了代码转储之外,你在说什么?
aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
static string Decrypt(SymmetricAlgorithm aesAlg, byte[] cipherText)
{
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}