我用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());
}
源码如下:
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());
}
解决方案 »
- 采集下来的jpg图片不能被其他软件正常识别
- 我用vs2008,右键点击“选择项”的时候,为什么vs会自动关闭?
- return string.Format("{0:yyMMddhhmmss}", DateTime.Now);
- 如何调用GetCursorPos这个API函数?
- 把窗体从矩形变为圆形
- 在web页面上面,我有一个按键,为什么这个按键里的代码只有在这个按键第二个次点击的时候才执行啊
- NET开发环境问题
- WinForm&HTTP协议高手进来。在线等后。。高分。。
- 如何添加一个引用库项目的可执行项目,并将这个项目设成启动项目,拜托各位大虾了!!!
- ----------关于OleDbParameter的问题---------
- 求助,下拉菜单的一个奇怪的问题!!!
- 发邮件代码那里错了??
要的话加QQ:251345410