日期:2014-05-19  浏览次数:20947 次

高手请:C#有哪种加密算法可以把字符串加密完又可以解密(当要再用到原字符串又可以解密的呢?)
C#有哪种加密算法可以把字符串加密完又可以解密(当要再用到原字符串又可以解密的呢?)

------解决方案--------------------
MD5可以吗?
------解决方案--------------------
看MSDN,有可逆加密法
------解决方案--------------------
自己写最安全~
------解决方案--------------------
DES加密解密算法:
public string EncryptString(string sInputString, string sKey)
{
byte[] data = Encoding.UTF8.GetBytes(sInputString);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream(); //创建其支持存储区为内存的流。
CryptoStream cs = new CryptoStream(ms,DES.CreateEncryptor(),CryptoStreamMode.Write);//将数据流连接到加密转换流
cs.Write(data,0,data.Length);
cs.FlushFinalBlock(); //用缓冲区的当前状态更新基础数据源或储存库,随后清除缓
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat( "{0:X2} ",b);
}
return ret.ToString();
}
// DES解密字符串
public string DecryptString(string sInputString, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

//Put the input string into the byte array
byte[] inputByteArray = new byte[sInputString.Length/2];
for (int x = 0; x < sInputString.Length; x+=2)
{
int i = Convert.ToInt32(sInputString.Substring(x,2), 16);
inputByteArray[x/2] = (byte)i;
}

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

//Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder();

return System.Text.Encoding.UTF8.GetString(ms.ToArray());

}
------解决方案--------------------
请参考这里,
http://zhouyabo.cnblogs.com/archive/2006/04/02/364907.html
http://zhouyabo.cnblogs.com/archive/2006/04/07/368860.html
------解决方案--------------------
lomin正解
------解决方案--------------------
shadow841112(孤风),自己写恐怕没有那么好写哦!要考虑越界什么的。