我用des加密技术对值进行加密与解密,但解出来的总与实际的值不同,请高手指点,
源码如下:
public void aa()
{
//8位的密钥串
string key="12345678";
//得到加密后的值
string after;
//得到加密前的原值
string befor; //加密过程
DESCryptoServiceProvider aa=newDESCryptoServiceProvider();
aa.Key=Encoding.UTF8.GetBytes(key);
aa.IV=Encoding.UTF8.GetBytes(key);
ICryptoTransform bb=aa.CreateEncryptor();
//要加密的值为1234
byte[] b=Encoding.UTF8.GetBytes("1234");
MemoryStream ms=new MemoryStream();
CryptoStream cs=new CryptoStream(ms,bb,CryptoStreamMode.Write);
cs.Write(b,0,b.Length);
cs.FlushFinalBlock();
after=Convert.ToBase64String(ms.ToArray()); //解密过程
DESCryptoServiceProvider aa1=new DESCryptoServiceProvider();
aa1.Key=Encoding.UTF8.GetBytes(key);
aa1.IV=Encoding.UTF8.GetBytes(key);
ICryptoTransform bb2=aa1.CreateEncryptor();
//得到转换后的长度
byte[] b1=new byte[after.Length];
//转换转换后的值
b1=Convert.FromBase64String(after);
MemoryStream ms2=new MemoryStream();
CryptoStream cs2=new CryptoStream(ms2,bb2,CryptoStreamMode.Write);
cs2.Write(b1,0,b1.Length);
cs2.FlushFinalBlock();
Encoding ed=new UTF8Encoding();
befor=ed.GetString(ms2.ToArray());
}