您的位置:首页 > 编程语言 > C#

C# 常用加密解密方法

2014-12-03 12:11 323 查看
字符串加密分可逆和不可逆加密两种,下面直接贴上代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace Operator.CommonOp
{
/// <summary>
/// 字符串加密。
/// </summary>
public class StringSecurity
{
/// <summary>
/// MD5加密。
/// </summary>
public static string MD5Encrypt(string originalString)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] palindata = Encoding.Default.GetBytes(originalString);
byte[] encryptdata = md5.ComputeHash(palindata);

return Convert.ToBase64String(encryptdata);
}

/// <summary>
/// RAS加密。
/// </summary>
public static string RSAEncrypt(string originalString)
{
CspParameters param = new CspParameters();
param.KeyContainerName = "12345";

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))
{
byte[] plaindata = Encoding.Default.GetBytes(originalString);
byte[] encryptdata = rsa.Encrypt(plaindata, false);

return Convert.ToBase64String(encryptdata);
}
}

/// <summary>
/// RAS解密。
/// </summary>
public static string RSADecrypt(string securitylString)
{
CspParameters param = new CspParameters();
param.KeyContainerName = "12345";
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))
{
byte[] encryptdata = Convert.FromBase64String(securitylString);
byte[] decryptdata = rsa.Decrypt(encryptdata, false);
return Encoding.Default.GetString(decryptdata);
}
}

/// <summary>
/// DES加密。
/// </summary>
public static string DESEncrypt(string originalString)
{
string securtyString = null;
string key = "12345678";
string iv = "87654321";
byte[] btKey = Encoding.UTF8.GetBytes(key);
byte[] btIV = Encoding.UTF8.GetBytes(iv);
byte[] inData = Encoding.UTF8.GetBytes(originalString);

DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write);

cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();

securtyString = Convert.ToBase64String(ms.ToArray());
cs.Close();
ms.Close();

return securtyString;
}

/// <summary>
/// DES解密。
/// </summary>
public static string DESDecrypt(string securityString)
{
byte[] inData = null;
try
{
inData = Convert.FromBase64String(securityString);
}
catch (Exception)
{
return null;
}

string originalString = null;
string key = "12345678";
string iv = "87654321";
byte[] btKey = Encoding.UTF8.GetBytes(key);
byte[] btIV = Encoding.UTF8.GetBytes(iv);

DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write);

cs.Write(inData, 0, inData.Length);
try
{
cs.FlushFinalBlock();
}
catch (Exception)
{
ms.Close();
return null;
}

originalString = Encoding.UTF8.GetString(ms.ToArray());
cs.Close();
ms.Close();

return originalString;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  加密解密