说明:
程序设计中,会遇到一些对字符串加密、解密的操作,C#中用DESCryptoServiceProvider类对字符串加密解密。
DESCryptoServiceProvider类 : 定义访问数据加密标准 ( DES ) 算法的加密服务提供程序 (CSP) 版本的包装对象。
命名空间:System.Security.Cryptography
实现代码(对字符串加密解密):
class Program
{
static void Main(string[] args)
{
#region 加密字符串
//调用加密函数
string strJiaMi = EncryptString("死神来了", "20140713", "12345678");
Console.WriteLine("死神来了加密后的字符串为:");
Console.WriteLine(strJiaMi);
Console.ReadKey();
//调用解密函数
string strJieMi = DecryptString(strJiaMi, "20140713", "12345678");
Console.WriteLine("对加密的字符串解密:");
Console.WriteLine(strJieMi);
Console.ReadKey();
#endregion
}
#region 加密字符串
public static string EncryptString(string sInputString, string sKey, string sIV)
{
try
{
byte[] data = Encoding.UTF8.GetBytes(sInputString);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sIV);
ICryptoTransform desencrypt = DES.CreateEncryptor();
byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
return BitConverter.ToString(result);
}
catch
{
return "加密出错!";
}
}
public static string DecryptString(string sInputString, string sKey, string sIV)
{
try
{
string[] sInput = sInputString.Split("-".ToCharArray());
byte[] data = new byte[sInput.Length];
for (int i = 0; i < sInput.Length; i++)
{
data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
}
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sIV);
ICryptoTransform desencrypt = DES.CreateDecryptor();
byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
return Encoding.UTF8.GetString(result);
}
catch
{
return "解密出错!";
}
}
#endregion
}
运行结果: