我认为
MD5(散列加密)是把要加密的字符串变成固定长度的密码,然后写入数据库,当要解密时,只能比较对那个写入到数据库中的那个值,但不知道原始密码没人知道?我这么理解对不?
3DES(对称加密) 而它可以把一个字符串加密后再原原本本的还原回最初的字符串是不?我这么理解对不对?
MD5(散列加密)是把要加密的字符串变成固定长度的密码,然后写入数据库,当要解密时,只能比较对那个写入到数据库中的那个值,但不知道原始密码没人知道?我这么理解对不?
3DES(对称加密) 而它可以把一个字符串加密后再原原本本的还原回最初的字符串是不?我这么理解对不对?
解决方案 »
- FLASH CS5做的SWF文件如何传值给ASPX文件,ASPX文件并返回值。
- asp.net中如何弹出新页显示
- js 获取控件值问题,急,在线等
- web from 上brother 9500 printer 打印條碼,客戶機沒有反應
- 关于一个搜索引擎的UML建模,请大家指点
- 安装vs2005中文SP1补丁提示无法读取安装源?
- DataGrid中有些数据无法显示出来 为什么? 在线等......
- 在WEB中实现子窗口的DATAGRID选中多条数据并把选中的多条数据放到主窗口的DATAGRID中,大家有没有什么好的解决方法
- C#画图
- 问一个关于xmlhttp和页面刷新的问题
- 求一代码。。。百分,若有加分也可!
- 想问下程序调用outlook发送邮件的问题.
DES是私钥,加密后通过密码可以还原。
3DES没用过,记得好像和DES一样,只是强度更大。
用MD5安全性相对高些
C#的DES加密算法类using System;
using System.Text;
using System.Security.Cryptography;
using System.IO;namespace Deposit
{/// <summary>
/// DES 的摘要说明。
/// </summary>
public class DES
{
public DES()
{
//
// TODO: 在此处添加构造函数逻辑
//
} //默认密钥向量
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; //密钥
public string KeyValue="20070413"; /// DES加密
/// <param >待加密的字符串</param>
/// <param >加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns> public string EncryptDES(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
//return encryptString;
return "Encrypt Failed!";
}
} /// DES解密
/// <param >待解密的字符串</param>
/// <param >解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns> public string DecryptDES(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
//return decryptString;
return "Decrypt Failed!";
}
}}}
DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。
代码参考