DES加密问题(急)
我在学习数据加密DES算法时,发现其事例都是通过文件流来举例的(FileStream)
请问,能不能将一字符串用DES加密后,返回到窗体的文本筐中。能举一下例子吗,谢谢
主要是,CrtptoStream的方法
(我本人的意见是,使用MemoryStream但是没实现出来
问题点数:20、回复次数:4Top
1 楼LuZhou(卢周)回复于 2003-11-02 08:20:07 得分 0
up
Top
2 楼huntertiger(清山)回复于 2003-11-03 08:53:11 得分 0
可以,只是不同的構造函數而已Top
3 楼xixigongzhu(夕夕公主(※快乐在于自己※))回复于 2003-11-03 09:07:11 得分 20
static string Encrypt(string datastr, string keystr) {
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();//des进行加密
byte[] key = System.Text.Encoding.Unicode.GetBytes(keystr);
byte[] data = System.Text.Encoding.Unicode.GetBytes(datastr);
MemoryStream ms = new MemoryStream();//存储加密后的数据
CryptoStream cs = new CryptoStream(ms,desc.CreateEncryptor(key, key),CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);//进行加密
cs.FlushFinalBlock();
return System.Text.Encoding.Unicode.GetString(ms.ToArray());//取加密后的数据
}
解密:
static string Decrypt(string datastr, string keystr) {
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
byte[] key = System.Text.Encoding.Unicode.GetBytes(keystr);
byte[] data = System.Text.Encoding.Unicode.GetBytes(datastr);
MemoryStream ms = new MemoryStream();//存储解密后的数据
CryptoStream cs = new CryptoStream(ms,desc.CreateDecryptor(key, key),CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);//解密数据
cs.FlushFinalBlock();
return System.Text.Encoding.Unicode.GetString(ms.ToArray());
}
注意几个问题:
DES加密算法是对称加密,它的Key是8个字节,即64位,用Unicode编码的话就是4个字符(一个字符两个字节);加密和解密的Key必须一样。Top
4 楼101monster(毛毛虫)回复于 2003-11-03 09:27:06 得分 0
呵呵!把例子里的程序改写成C的就好用了。Top




