高分求解
高分求一个对称加密算法(c#,对字符串加解密),或者帮我看看下面的程序哪儿有错?该程序在同一进程内对同一字符串第一次加密和第二次加密得出的结果不一样。
private static byte[] KEY_64 = new byte[8] {2,3,4,5,6,7,8,9};
private static byte[] IV_64 = new byte[8] {12,13,14,15,16,17,1,19};
public static string EncryptData(string oStr)
{
string nStr="";
if(oStr.Length>0)
{
DESCryptoServiceProvider cryptoProvider=new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms,cryptoProvider.CreateEncryptor(KEY_64,IV_64),CryptoStreamMode.Write);
StreamWriter sw=new StreamWriter(cs);
sw.Write(oStr) ;
sw.Flush();
cs.FlushFinalBlock();
sw.Flush();
byte[] buffer=ms.GetBuffer();
int i=0;
int iLength=Int16.Parse(ms.Length.ToString());
nStr=Convert.ToBase64String(buffer,i,iLength);
cs.Close();
ms.Close();
sw.Close();
}
return nStr;
}
public static string DecryptData(string oStr)
{
string nStr="";
if(oStr.Length>0)
{
DESCryptoServiceProvider cryptoProvider=new DESCryptoServiceProvider();
byte[] buffer=Convert.FromBase64String(oStr);
MemoryStream ms = new MemoryStream(buffer);
CryptoStream cs = new CryptoStream(ms,cryptoProvider.CreateDecryptor(KEY_64, IV_64),CryptoStreamMode.Read);
StreamReader sr=new StreamReader(cs);
nStr=sr.ReadToEnd();
cs.Close();
ms.Close();
sr.Close();
}
return nStr;
}