本人刚接触 加密 不懂得怎么去处理,加密的方法有很多种我一下看不懂,情哥哥姐姐们教我一下,怎样加密数据(如果详细的带吗更好) 谢谢!!!!
解决方案 »
- c#下如何让messagebox置于最前?
- 关于Spring.Net无法从程序集加载XML的问题
- "普通窗体"成为"父窗体"后怎样限制激活窗体的数量只为 1 ???请高手们帮帮忙.
- C# 如何更改"网络驱动器"盘符(有连接好的代码)
- 使用errorprovider后把错误提示再去掉的方法
- gridview中的单击事件
- ComboBox的问题, 怎么遍访比对ComboBox的值呢?
- C#动态查询问题,急.请各位高手指教.(100分)
- CreateSubKey创建注册表项失败,但是并没有抛出异常
- winform listview实现平铺查询
- 高人解救
- (高手请来)C# richtextbox或者 text导入到listview里
加密解密
using System.Text;
using System.Security.Cryptography;
using System.IO;namespace MyCryptography
{
/// <summary>
/// DES加密解密
/// </summary>
public class DES
{
/// <summary>
/// 获取密钥
/// </summary>
private static string Key
{
get { return @"P@+#wG+Z"; }
} /// <summary>
/// 获取向量
/// </summary>
private static string IV
{
get { return @"L%n67}G\Mk@k%:~Y"; }
} /// <summary>
/// DES加密
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <returns>密文</returns>
public static string DESEncrypt(string plainStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);
string encrypt = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, 0, byteArray.Length);
cStream.FlushFinalBlock();
encrypt = Convert.ToBase64String(mStream.ToArray());
}
}
}
catch { }
des.Clear();
return encrypt;
} /// <summary>
/// DES解密
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <returns>明文</returns>
public static string DESDecrypt(string encryptStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Convert.FromBase64String(encryptStr);
string decrypt = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, 0, byteArray.Length);
cStream.FlushFinalBlock();
decrypt = Encoding.UTF8.GetString(mStream.ToArray());
}
}
}
catch { }
des.Clear(); return decrypt;
} public static void Main(String []args)
{
string sb,sa,sd;
DES d=new DES();
Console.WriteLine("请输入需要加密的字符串");
sb = Console.ReadLine();
sa = DES.DESEncrypt(sb);
Console.WriteLine("加密后的字符为"+sa);
sd = DES.DESDecrypt(sa);
Console.WriteLine("解密后的字符为"+sd);
} } /// <summary>pu
/// AES加密解密
/// </summary>
public class AES
{
/// <summary>
/// 获取密钥
/// </summary>
private static string Key
{
get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }
} /// <summary>
/// 获取向量
/// </summary>
private static string IV
{
get { return @"L+\~f4,Ir)b$=pkf"; }
} /// <summary>
/// AES加密
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <returns>密文</returns>
public static string AESEncrypt(string plainStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null;
Rijndael aes = Rijndael.Create();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, 0, byteArray.Length);
cStream.FlushFinalBlock();
encrypt = Convert.ToBase64String(mStream.ToArray());
}
}
}
catch { }
aes.Clear(); return encrypt;
} /// <summary>
/// AES加密
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <param name="returnNull">加密失败时是否返回 null,false 返回 String.Empty</param>
/// <returns>密文</returns>
public static string AESEncrypt(string plainStr, bool returnNull)
{
string encrypt = AESEncrypt(plainStr);
return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);
} /// <summary>
/// AES解密
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <returns>明文</returns>
public static string AESDecrypt(string encryptStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null;
Rijndael aes = Rijndael.Create();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, 0, byteArray.Length);
cStream.FlushFinalBlock();
decrypt = Encoding.UTF8.GetString(mStream.ToArray());
}
}
}
catch { }
aes.Clear(); return decrypt;
} /// <summary>
/// AES解密
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <param name="returnNull">解密失败时是否返回 null,false 返回 String.Empty</param>
/// <returns>明文</returns>
public static string AESDecrypt(string encryptStr, bool returnNull)
{
string decrypt = AESDecrypt(encryptStr);
return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);
}
}}
http://topic.csdn.net/u/20100527/16/789d8315-5e7d-4f1b-a8aa-d447864d4c63.html这里我也贴了一个
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Security.Cryptography;
///数据的加密与解密空间
namespace CSharpDesign.ClassLibrary.Data.EncryptionDecryption
{
/// <summary>
/// 加密解密类
/// </summary>
public class EncryptionDecryption
{
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Encode(string str)
{
string htext = ""; // blank text for (int i = 0; i < str.Length; i++)
{
htext = htext + (char)(str[i] + 10 - 1 * 2);
}
return htext;
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Decode(string str)
{
string dtext = ""; for (int i = 0; i < str.Length; i++)
{
dtext = dtext + (char)(str[i] - 10 + 1 * 2);
}
return dtext;
}
}
/// <summary>
/// 加密解密器
/// </summary>
public class EncryptorDecryptor
{
/// <summary>
/// 使用缺省密钥字符串加密
/// </summary>
/// <param name="original">明文</param>
/// <returns>密文</returns>
public static string Encrypt(string original)
{
return Encrypt(original, "JASONHEUNG");
}
/// <summary>
/// 使用缺省密钥解密
/// </summary>
/// <param name="original">密文</param>
/// <returns>明文</returns>
public static string Decrypt(string original)
{
return Decrypt(original, "JASONHEUNG", System.Text.Encoding.Default);
}
/// <summary>
/// 使用给定密钥加密
/// </summary>
/// <param name="original">原始文字</param>
/// <param name="key">密钥</param>
/// <param name="encoding">字符编码方案</param>
/// <returns>密文</returns>
public static string Encrypt(string original, string key)
{
byte[] buff = System.Text.Encoding.Default.GetBytes(original);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return Convert.ToBase64String(Encrypt(buff, kb));
}
/// <summary>
/// 使用给定密钥解密
/// </summary>
/// <param name="original">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
public static string Decrypt(string original, string key)
{
return Decrypt(original, key, System.Text.Encoding.Default);
} /// <summary>
/// 使用缺省密钥解密,返回指定编码方式明文
/// </summary>
/// <param name="original">密文</param>
/// <param name="encoding">编码方式</param>
/// <returns>明文</returns>
public static string Decrypt(string original, Encoding encoding)
{ return Decrypt(original, "JASONHEUNG", encoding);
} /// <summary>
/// 使用给定密钥解密
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <param name="encoding">字符编码方案</param>
/// <returns>明文</returns>
public static string Decrypt(string encrypted, string key, Encoding encoding)
{
byte[] buff = Convert.FromBase64String(encrypted);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return encoding.GetString(Decrypt(buff, kb));
}
/// <summary>
/// 生成MD5摘要
/// </summary>
/// <param name="original">数据源</param>
/// <returns>摘要</returns>
public static byte[] MakeMD5(byte[] original)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
byte[] keyhash = hashmd5.ComputeHash(original);
hashmd5 = null;
return keyhash;
}
/// <summary>
/// 使用给定密钥加密
/// </summary>
/// <param name="original">明文</param>
/// <param name="key">密钥</param>
/// <returns>密文</returns>
public static byte[] Encrypt(byte[] original, byte[] key)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD5(key);
des.Mode = CipherMode.ECB; return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
}
/// <summary>
/// 使用给定密钥解密数据
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
public static byte[] Decrypt(byte[] encrypted, byte[] key)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD5(key);
des.Mode = CipherMode.ECB;
return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
}
/// <summary>
/// 使用给定密钥加密
/// </summary>
/// <param name="original">原始数据</param>
/// <param name="key">密钥</param>
/// <returns>密文</returns>
public static byte[] Encrypt(byte[] original)
{
byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
return Encrypt(original, key);
}
/// <summary>
/// 使用缺省密钥解密数据
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
public static byte[] Decrypt(byte[] encrypted)
{
byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
return Decrypt(encrypted, key);
}
}
}
md5,des,sha,rsa 各有好处。不过我建议你使用RC2
RC2加密算法要快些。
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;namespace WindowsApplication32
{
class RC2
{
private string localKey = "dddddddd";//8位密文
private byte[] IV ={ 0x94, 0x93, 0x92, 0x91, 0x90, 0x89, 0x88, 0x87 }; //8个16进制,向量
RC2CryptoServiceProvider DS = new RC2CryptoServiceProvider();
public RC2()
{
}
public RC2(string KEY)
{
localKey = KEY;
}
/// <summary>
/// 加密算法
/// </summary>
/// <param name="text">加密文本</param>
/// <returns></returns>
public string jiami(string text)
{
MemoryStream ms = new MemoryStream();
byte[] key = Encoding.UTF8.GetBytes(localKey);
ICryptoTransform transform = DS.CreateEncryptor(key, IV);
CryptoStream encstream = new CryptoStream(ms, transform, CryptoStreamMode.Write);
byte[] buffer = Encoding.UTF8.GetBytes(text); //加密明文时用Encoding.UTF8.
encstream.Write(buffer, 0, buffer.Length);
encstream.FlushFinalBlock();
ms.Close();
encstream.Clear();
return Convert.ToBase64String(ms.ToArray()); }
/// <summary>
/// 解密算法
/// </summary>
/// <param name="text">解密wenbe</param>
/// <returns></returns>
public string jiemi(string text)
{
byte[] key = Encoding.UTF8.GetBytes(localKey);
byte[] buffer = Convert.FromBase64String(text); //解密密文时用Convert.FromBase64String
MemoryStream ms = new MemoryStream();
ICryptoTransform transform = DS.CreateDecryptor(key, IV);
CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write);
cs.Write(buffer, 0, buffer.Length);
cs.FlushFinalBlock();
ms.Close();
cs.Clear();
string s = Encoding.UTF8.GetString(ms.ToArray());
return s; // return Convert.ToBase64String(ms.ToArray());
}
}
}