关于加密 对.KEY和IV根据不同的加密算法位数要求不通.DESCryptoServiceProvider实现DES标准加密算法.他的IV和KEY是8位的所以byte[] bytKeyString byte[] bytIvString 都应该定义为8位数组. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是的,.net中不同的算法要用不同长度的key,你用的是des算法,它的密钥长度是56,iv是8位.你这个方法一定要传指定的key和iv吗?如果不要指定,你可以这样用:UnicodeEncoding enco = new UnicodeEncoding();byte[] bys = enco.GetBytes(sOriginalText);MemoryStream mStream = new MemoryStream();DESCryptoServiceProvider des = new DESCryptoServiceProvider(); ICryptoTransform crypto = des.CreateEncryptor();CryptoStream cStream = new CryptoStream(mStream, crypto, CryptoStreamMode.Write);cStream.Write(bys, 0, bys.length);byte[] bytCrypt = new byte[mStream.Length];mStream.Read(bytCrypt,0,bytCrypt.Length);String sCryptograph = encode.GetString(bytCrypt,0,bytCrypt.Length);return sCryptograph; 好象还是不行,是不是和环境有关UnicodeEncoding enco = new UnicodeEncoding();byte[] bys = enco.GetBytes(sOriginalText);MemoryStream mStream = new MemoryStream();DESCryptoServiceProvider des = new DESCryptoServiceProvider(); ICryptoTransform crypto = des.CreateEncryptor();CryptoStream cStream = new CryptoStream(mStream, crypto, CryptoStreamMode.Write);cStream.Write(bys, 0, bys.length);byte[] bytCrypt = new byte[mStream.Length];mStream.Read(bytCrypt,0,bytCrypt.Length);String sCryptograph = encode.GetString(bytCrypt,0,bytCrypt.Length);return sCryptograph;这段也无法用,从mstream中读出的byte都是0 int i= mStream.Read(bytCrypt,0,bytCrypt.Length);i=0,没有从mstream中读出 改成这样试一试private string Encrypt(string sOriginalText,string sKey) { UnicodeEncoding encode = new UnicodeEncoding(); byte[] bytText = encode.GetBytes(sOriginalText); byte[] bytKeyString = encode.GetBytes(sKey); byte[] bytKey= (new MACTripleDES()).ComputeHash(bytKeyString);\\改变 byte[] bytIvString = encode.GetBytes("abc"); byte[] bytIv=(new MACTripleDES()).ComputeHash(bytIvString);\\改变 MemoryStream memstream = new MemoryStream(); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); ICryptoTransform desencrypt = des.CreateEncryptor(bytKey,bytIv); CryptoStream cryptostream = new CryptoStream(memstream,desencrypt,CryptoStreamMode.Write); cryptostream.Write(bytText,0,bytText.Length); memstream.Position=0;\\改变 byte[] bytCrypt = new byte[memstream.Length]; memstream.Read(bytCrypt,0,bytCrypt.Length); string sCryptograph = encode.GetString(bytCrypt,0,bytCrypt.Length); return sCryptograph; } 如何知道数据库中哪些表被写入? C# 串口通信小问题,高手进,在线急等!!! 翻译字典的设计思路 应用程序 关于aspx调用css问题,愚昧一天了(在线等待)先谢!!! 请问怎么把两张图片合并为一张? 用sqldmo做sqlserver数据库恢复失败? 请教BHO中如何提供浏览器外部方法? 找一个c#下面的通用打印机打印插件,要求预览与打印一致 怎么让dev gridcontrol表里默认显示登录人信息 和登录时间 有办法将Color对象里的颜色转换成ColorMatrix吗? C#&&.net想说爱你不容易!
你这个方法一定要传指定的key和iv吗?
如果不要指定,你可以这样用:
UnicodeEncoding enco = new UnicodeEncoding();
byte[] bys = enco.GetBytes(sOriginalText);
MemoryStream mStream = new MemoryStream();
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); ICryptoTransform crypto = des.CreateEncryptor();
CryptoStream cStream = new CryptoStream(mStream, crypto, CryptoStreamMode.Write);
cStream.Write(bys, 0, bys.length);
byte[] bytCrypt = new byte[mStream.Length];
mStream.Read(bytCrypt,0,bytCrypt.Length);
String sCryptograph = encode.GetString(bytCrypt,0,bytCrypt.Length);return sCryptograph;
UnicodeEncoding enco = new UnicodeEncoding();
byte[] bys = enco.GetBytes(sOriginalText);
MemoryStream mStream = new MemoryStream();
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); ICryptoTransform crypto = des.CreateEncryptor();
CryptoStream cStream = new CryptoStream(mStream, crypto, CryptoStreamMode.Write);
cStream.Write(bys, 0, bys.length);
byte[] bytCrypt = new byte[mStream.Length];
mStream.Read(bytCrypt,0,bytCrypt.Length);
String sCryptograph = encode.GetString(bytCrypt,0,bytCrypt.Length);return sCryptograph;这段也无法用,从mstream中读出的byte都是0
i=0,没有从mstream中读出
private string Encrypt(string sOriginalText,string sKey)
{
UnicodeEncoding encode = new UnicodeEncoding();
byte[] bytText = encode.GetBytes(sOriginalText);
byte[] bytKeyString = encode.GetBytes(sKey);
byte[] bytKey= (new MACTripleDES()).ComputeHash(bytKeyString);\\改变
byte[] bytIvString = encode.GetBytes("abc");
byte[] bytIv=(new MACTripleDES()).ComputeHash(bytIvString);\\改变 MemoryStream memstream = new MemoryStream(); DESCryptoServiceProvider des = new DESCryptoServiceProvider();
ICryptoTransform desencrypt = des.CreateEncryptor(bytKey,bytIv);
CryptoStream cryptostream = new CryptoStream(memstream,desencrypt,CryptoStreamMode.Write);
cryptostream.Write(bytText,0,bytText.Length);
memstream.Position=0;\\改变
byte[] bytCrypt = new byte[memstream.Length];
memstream.Read(bytCrypt,0,bytCrypt.Length);
string sCryptograph = encode.GetString(bytCrypt,0,bytCrypt.Length); return sCryptograph;
}