使用DES加密字符串

NightShadows 发表于 2007-07-09 22:12:07

转眼间一个月没更新过BLOG了,中间虽然有几次想更新,但最终没更新,说实话也真没什么好写的,今天没事写了个加密字符的winform小程序,打开博客发现一个月没更新了,正好贴上来充充字数^^

调用.net类库用DES加密字符串,textBox1中为要加密的字符串,textBox2中为加密后的字符串,textBox3中为解密后的字符串,点击button1后把textBox1中的数据加密后写到textBox2中,点击button2后把textBox2中的加密的字符串解密写入textBox3中.
注意初始IV的设置,开始因为没有设置IV,造成每次密后生成的密文都不同,后来才发现是没有设置IV.
还有密钥必须和加密块的大小相同,默认是64bit,
程序比较简单,有好的意见请不吝赐教.
程序运行界面

加密:
 private void button1_Click(object sender, EventArgs e)
        {
            // Create a DESCryptoServiceProvider
            System.Security.Cryptography.DESCryptoServiceProvider des = new System.Security.Cryptography.DESCryptoServiceProvider();
            System.Text.UTF8Encoding utf = new UTF8Encoding();
            byte[] key = utf.GetBytes("12345678");
            des.Key = key;
            des.IV = key;

            // Create a memory stream.
            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            // Create a CryptoStream using the memory stream and the CSP DES key. 
            System.Security.Cryptography.CryptoStream encStream = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);

            // Create a StreamWriter to write a string to the stream.
            System.IO.StreamWriter sw = new System.IO.StreamWriter(encStream);

            // Write the plaintext to the stream.
            sw.WriteLine(textBox1.Text);

            // Close the StreamWriter and CryptoStream.
            sw.Close();
            encStream.Close();

            // Get an array of bytes that represents the memory stream.
            byte[] buffer = ms.ToArray();

            // Close the memory stream.
            ms.Close();

            string str = "";
            for (int i = 0; i < buffer.Length; i++)
            {
                str += "-";
                str += buffer[i].ToString();
            }
            textBox2.Text = str.Substring(1);
        }

解密: private void button2_Click(object sender, EventArgs e)
        {
            string str = textBox2.Text;
            string[] strs = str.Split('-');
            byte[] buffer = new byte[strs.Length];
            for (int i =0; i <strs.Length; i++)
            {
                buffer[i] = byte.Parse(strs[i]);
            }

            // Create a DESCryptoServiceProvider
            System.Security.Cryptography.DESCryptoServiceProvider des = new   System.Security.Cryptography.DESCryptoServiceProvider();
            UTF8Encoding utf = new UTF8Encoding();
            byte[] key = utf.GetBytes("12345678");
            des.Key = key;
            des.IV = key;
           
            // Create a memory stream to the passed buffer.
            System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);

            // Create a CryptoStream using the memory stream and the CSP DES key.
            System.Security.Cryptography.CryptoStream encStream = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Read);

            // Create a StreamReader for reading the stream.
            System.IO.StreamReader sr = new System.IO.StreamReader(encStream);

            // Read the stream as a string.
            string val = sr.ReadLine();

            // Close the streams.
            sr.Close();
            encStream.Close();
            ms.Close();

            textBox3.Text = val;
        }
关键词(Tag): 加密 c# des


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定