解密之后信息带有乱字符,问题在哪里?
代码不复杂:
string msg = "Hello World!"; //需要加密的信息
byte[] buf = Encoding.Unicode.GetBytes(msg);
RijndaelManaged rm = new RijndaelManaged();
//=======================================================================
MemoryStream inStream = new MemoryStream(buf);
MemoryStream outStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(outStream,
rm.CreateEncryptor(rm.Key,rm.IV),CryptoStreamMode.Write);
inStream.WriteTo(cStream);//加密
//=======================================================================
byte[] cbuf = outStream.GetBuffer();
string cstr = Encoding.Unicode.GetString(cbuf);
Console.WriteLine(cstr);// 加密之后的数据
//=======================================================================
MemoryStream inCryptoStream = new MemoryStream(cbuf);
MemoryStream outDecStream = new MemoryStream();
CryptoStream DecStream = new CryptoStream(outDecStream,
rm.CreateDecryptor(rm.Key,rm.IV),CryptoStreamMode.Write);
inCryptoStream.WriteTo(DecStream);//解密
//=======================================================================
byte[] decbuf = outDecStream.GetBuffer();
string decstr = Encoding.Unicode.GetString(decbuf,0,buf.Length);
Console.WriteLine(decstr); //解密之后的信息
但是解密之后的信息后面成了乱字符:
Hello Wo?替?鳃
请大侠们多指点,错误究竟在哪里?
string msg = "Hello World!"; //需要加密的信息
byte[] buf = Encoding.Unicode.GetBytes(msg);
RijndaelManaged rm = new RijndaelManaged();
//=======================================================================
MemoryStream inStream = new MemoryStream(buf);
MemoryStream outStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(outStream,
rm.CreateEncryptor(rm.Key,rm.IV),CryptoStreamMode.Write);
inStream.WriteTo(cStream);//加密
//=======================================================================
byte[] cbuf = outStream.GetBuffer();
string cstr = Encoding.Unicode.GetString(cbuf);
Console.WriteLine(cstr);// 加密之后的数据
//=======================================================================
MemoryStream inCryptoStream = new MemoryStream(cbuf);
MemoryStream outDecStream = new MemoryStream();
CryptoStream DecStream = new CryptoStream(outDecStream,
rm.CreateDecryptor(rm.Key,rm.IV),CryptoStreamMode.Write);
inCryptoStream.WriteTo(DecStream);//解密
//=======================================================================
byte[] decbuf = outDecStream.GetBuffer();
string decstr = Encoding.Unicode.GetString(decbuf,0,buf.Length);
Console.WriteLine(decstr); //解密之后的信息
但是解密之后的信息后面成了乱字符:
Hello Wo?替?鳃
请大侠们多指点,错误究竟在哪里?
...全文
相关推荐
解决在Linux上对字符串中带有特殊字符的加密和解密问题
在Linux上,对字符串中带有特殊字符的,加密和解密都会出现问题,本程序代码能够解决这一问题,通过简单的代码,能够让你轻松解决特殊字符的问题。
Arnold置乱变换的matlab代码.
首先,函数检查输入参数的格式是否正确,如果不正确,则输出错误信息并返回。2. 读取图像文件,并将其转换为数字矩阵 `Q`。3. 如果图像不是二维数组,则不进行处理,返回错误信息。4.
Java对字符串进行加密解密
Java字符串加密解密Java字符串加密解密是指使用Java语言对字符串进行加密和解密操作的过程。在这个过程中,我们可以使用异或运算符来对字符串进行加密和解密。
c++字符串加密解密
在C++编程中,字符串加密和解密是信息安全领域中的重要技术,主要用于保护数据的隐私和安全性。
【图像加解密】基于正交拉丁方置乱算法实现图像加解密matlab代码.zip
该压缩包文件主要包含了一种图像加解密的MATLAB代码实现,具体是基于正交拉丁方(Orthogonal Latin Square,OLS)置乱算法。


