NightShadowsのBit » 日志 » 使用DES加密字符串
使用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;
}
调用.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;
}
相关日志:
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾

