【发布时间】:2015-03-07 21:17:47
【问题描述】:
我目前正在处理一个小对象,它可以帮助我加密文件然后解密它,并将它作为 MemoryStream 返回。但是,当我解密时,我不断收到“错误数据”。
"ExceptionMessage": "Bad Data.\ \ ",
"ExceptionType": "System.Security.Cryptography.CryptographicException",
课程如下
public class SignatureService {
private readonly DESCryptoServiceProvider _desCryptoServiceProvider;
private static byte[] _key = { 5, 6, 7, 2, 3, 4, 8, 1 };
private static byte[] _iv = { 5, 2, 3, 4, 1, 7, 4, 2 };
public SignatureService () {
_desCryptoServiceProvider = new DESCryptoServiceProvider();
}
public void SaveSignatureOnDisk ( Stream stream ) {
using ( var fs = new FileStream( "filepath", FileMode.Create, FileAccess.Write ) ) {
var cryptoStream = new CryptoStream( fs, _desCryptoServiceProvider.CreateEncryptor( _key, _iv ), CryptoStreamMode.Write );
var bytearrayinput = new byte[ stream.Length - 1 ];
stream.Read( bytearrayinput, 0, bytearrayinput.Length );
cryptoStream.Write( bytearrayinput, 0, bytearrayinput.Length );
}
}
public Stream ReadSignatureOnDisk () {
Stream returnedStream;
using ( var fs = new FileStream( "filepath", FileMode.Open, FileAccess.Read ) ) {
var cryptoStream = new CryptoStream( fs, _desCryptoServiceProvider.CreateDecryptor( _key, _iv ), CryptoStreamMode.Read );
string contents = new StreamReader( cryptoStream ).ReadToEnd();
byte[] unicodes = Encoding.Unicode.GetBytes( contents );
returnedStream = new MemoryStream( unicodes );
}
return returnedStream;
}
}
【问题讨论】:
-
查看我的更新答案,以更好的方式从磁盘读取并返回流。
标签: c# encryption des