不一致,所以我的問題很簡單。我想加密一些文本,並將其寫入文件,如數組的字節,並且比我需要讀取文件的內容,並獲取像參數到另一個方法解密數組字節的字符串。 方法加密和解密工作正常我嘗試它,但是當我從FILE中使用字節數組時它拋出異常。讀取字節數組與將字節數組寫入文件
private static byte[] EncryptString(string text,byte[] key,byte[] vektor)
{
byte[] array=null;
// Check arguments.
if (text == null || text.Length <= 0)
throw new ArgumentNullException("plainText");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("Key");
if (vektor == null || vektor.Length <= 0)
throw new ArgumentNullException("Vektor");
try
{
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
provider.Key = key;
provider.IV = vektor;
using (MemoryStream memory = new MemoryStream())
{
using (CryptoStream crypto = new CryptoStream(memory, provider.CreateEncryptor(provider.Key, provider.IV), CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(crypto))
{
writer.WriteLine(text);
}
}
array = memory.ToArray();
}
}
}
catch (ArgumentNullException e)
{
Console.WriteLine("Error in EncryptString {0}", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Error in EncryptString {0}", e.Message);
}
return array;
}
這種方法Ecnrypt字節數組字符串
private static string DecryptByte(byte[] text, byte[] key, byte[] vektor)
{
string result = null;
// Check arguments.
if (text == null || text.Length <= 0)
throw new ArgumentNullException("plainText");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("Key");
if (vektor == null || vektor.Length <= 0)
throw new ArgumentNullException("Key");
try
{
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
provider.Key=key;
provider.IV=vektor;
using (MemoryStream memory = new MemoryStream(text))
{
using (CryptoStream crypto = new CryptoStream(memory, provider.CreateDecryptor(provider.Key, provider.IV), CryptoStreamMode.Read))
{
using (StreamReader read = new StreamReader(crypto))
{
result=read.ReadToEnd();
}
}
}
}
}
catch(Exception e)
{
Console.WriteLine("Error in DecryptByte:{0}"+e.Message);
}
return result;
}
嗯,我保存加密的文本,然後當按鈕被按下
private void buttonDecrypt_Click(object sender, RoutedEventArgs e)
{
byte[] text=null,helper=null;
string result = null;
try
{
using (FileStream filestream = File.OpenRead(path))
{
helper = new byte[filestream.Length];
filestream.Read(helper, 0, (int)filestream.Length);
}
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
result = DecryptByte(helper, provider.Key, provider.IV);
}
}
catch(Exception ex)
{
Console.WriteLine("Error v ButtonDecrypt.{0}_____{1}",ex.Message,ex.Data);
}
}
所以我的問題是,這是我從讀取數據文件是不一樣的,並在DecryptByte引發異常。你可以幫幫我嗎? 編輯是啊異常消息是無效的數據
有什麼異常(精確),以及哪一行代碼是把它扔?此外,你的代碼有點混亂 - 你應該真正將你的讀/寫代碼從他們自己的方法中提取出來,與GUI分開。重構代碼以更好地分離責任將有助於您嘗試調試這類問題。 – tomfanning 2012-03-22 22:30:29
你能告訴我們什麼例外說? – 2012-03-22 22:34:18
我敢打賭!填充無效,無法刪除! – Steve 2012-03-22 22:39:10