求教:des算法的原理?? 原理是按位异或、移位等等组合的复杂算法,在C#中,有System.Security.Cryptography的名称空间,里头支持DES算法,所以不用你写了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的blog,关于DES的http://blog.csdn.net/cnming/archive/2004/12/09/210437.aspx你指定好密钥即可,当然你要了解密钥的概念,DES是对称密钥的加密解密算法#region TripleDES算法 public class ClassTripleDES { public ClassTripleDES() { } //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。 public static string Encrypt(string pass) { try { byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass); PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null); byte[] key = pdb.GetBytes(24); byte[] iv = pdb.GetBytes(8); MemoryStream ms = new MemoryStream(); TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider(); CryptoStream cs = new CryptoStream(ms,tdesc.CreateEncryptor(key, iv),CryptoStreamMode.Write); cs.Write(bt, 0, bt.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } catch(Exception ex) { throw ex; } } //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。 public static string Decrypt(string str, string pass) { try { byte[] bt = Convert.FromBase64String(str); PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null); byte[] key = pdb.GetBytes(24); byte[] iv = pdb.GetBytes(8); MemoryStream ms = new MemoryStream(); TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider(); CryptoStream cs = new CryptoStream(ms,tdesc.CreateDecryptor(key, iv),CryptoStreamMode.Write); cs.Write(bt, 0, bt.Length); cs.FlushFinalBlock(); return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray()); } catch(Exception ex) { throw ex; } } //使用: //string str = Encrypt("bbb"); //Console.WriteLine(Decrypt(str, "bbb")); //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。 public static string EncryptWithKey(string pass, string p_key) { try { byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass); PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null); byte[] key = pdb.GetBytes(24); byte[] iv = pdb.GetBytes(8); MemoryStream ms = new MemoryStream(); TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider(); CryptoStream cs = new CryptoStream(ms,tdesc.CreateEncryptor(key, iv),CryptoStreamMode.Write); cs.Write(bt, 0, bt.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } catch(Exception ex) { throw ex; } } //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。 public static string DecryptWithKey(string str, string p_key) { try { byte[] bt = Convert.FromBase64String(str); PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null); byte[] key = pdb.GetBytes(24); byte[] iv = pdb.GetBytes(8); MemoryStream ms = new MemoryStream(); TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider(); CryptoStream cs = new CryptoStream(ms,tdesc.CreateDecryptor(key, iv),CryptoStreamMode.Write); cs.Write(bt, 0, bt.Length); cs.FlushFinalBlock(); return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray()); } catch(Exception ex) { throw ex; } } } #endregion http://www.50yi.com/book/bczl/200409/98.html 重置控件数组 C#自定义按钮控件的问题WINFORM 方面的大家来看看那 有关个ListView中的个别字体显示颜色???? C#引用了EXCELCOM组件,为什么在USING EXCEL的时候提示找不到命名空间? 如何将PictureBox变成圆形啊? 关于AD的问题,各位大虾来帮忙啊 关于根据XML配置文件连接数据库的问题,请大家帮帮忙。 怎么在一个项目里检查是否存在一个类 C#怎么写ini文件? 在线通讯软件演示地址 再问GAC:能过gacutil.exe将程序集加到GAC后,怎么样才会自动出现在"添加/移除控件"的对话框中呢? 在。NET下如何绑定COMBOBOX?
{
public ClassTripleDES()
{
} //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。
public static string Encrypt(string pass)
{
try
{
byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateEncryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
} //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。
public static string Decrypt(string str, string pass)
{
try
{
byte[] bt = Convert.FromBase64String(str);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateDecryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
}
//使用:
//string str = Encrypt("bbb");
//Console.WriteLine(Decrypt(str, "bbb")); //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。
public static string EncryptWithKey(string pass, string p_key)
{
try
{
byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateEncryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
} //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。
public static string DecryptWithKey(string str, string p_key)
{
try
{
byte[] bt = Convert.FromBase64String(str);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateDecryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
} } #endregion