您的位置:首页 > 其它

.NET中的加密解密:私钥加密(对称加密):AES、DES、RC2、Rijindael、TripleDES

2009-04-11 20:04 531 查看
namespace Encrypt_And_Decrypt_PrivateKey
{
public class AesSample
{
Rijndael aes = null;

public AesSample()
{
aes = Rijndael.Create();

}

public string Encrypt(string data,byte[] bKey)
{
try
{
byte[] bData = Encoding.UTF8.GetBytes(data);
aes.Key = bKey;
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;

ICryptoTransform iCryptoTransform = aes.CreateEncryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);

return Convert.ToBase64String(bResult);
}
catch
{
throw;
}
}

public string Decrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Convert.FromBase64String(data);
aes.Key = bKey;
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;

ICryptoTransform iCryptoTransform = aes.CreateDecryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch
{
throw;
}
}

}//class AesSample

public class DesSample
{
DES des = null;

public DesSample()
{
des = new DESCryptoServiceProvider();
}

public string Encrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Encoding.UTF8.GetBytes(data);
des.Key = bKey;

ICryptoTransform iCryptoTransform = des.CreateEncryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);

return Convert.ToBase64String(bResult);
}
catch
{
throw;
}
}

public string Decrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Convert.FromBase64String(data);
des.Key = bKey;

ICryptoTransform iCryptoTransform = des.CreateDecryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch
{
throw;
}
}

}//class DesSample

public class Rc2Sample
{
RC2 rc2 = null;

public Rc2Sample()
{
rc2 = new RC2CryptoServiceProvider();
}

public string Encrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Encoding.UTF8.GetBytes(data);
rc2.Key = bKey;

ICryptoTransform iCryptoTransform = rc2.CreateEncryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);

return Convert.ToBase64String(bResult);
}
catch
{
throw;
}
}

public string Decrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Convert.FromBase64String(data);
rc2.Key = bKey;

ICryptoTransform iCryptoTransform = rc2.CreateDecryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch
{
throw;
}
}
}

public class RijndaelSample
{
Rijndael rijndael = null;

public RijndaelSample()
{
rijndael = new RijndaelManaged();
}

public string Encrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Encoding.UTF8.GetBytes(data);
rijndael.Key = bKey;

ICryptoTransform iCryptoTransform = rijndael.CreateEncryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);

return Convert.ToBase64String(bResult);
}
catch
{
throw;
}
}

public string Decrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Convert.FromBase64String(data);
rijndael.Key = bKey;

ICryptoTransform iCryptoTransform = rijndael.CreateDecryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch
{
throw;
}
}

}

public class TripleDESSample
{
TripleDES tDes = null;

public TripleDESSample()
{
tDes = new TripleDESCryptoServiceProvider();
}

public string Encrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Encoding.UTF8.GetBytes(data);
tDes.Key = bKey;

ICryptoTransform iCryptoTransform = tDes.CreateEncryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);

return Convert.ToBase64String(bResult);
}
catch
{
throw;
}
}

public string Decrypt(string data, byte[] bKey)
{
try
{
byte[] bData = Convert.FromBase64String(data);
tDes.Key = bKey;

ICryptoTransform iCryptoTransform = tDes.CreateDecryptor();
byte[] bResult =
iCryptoTransform.TransformFinalBlock(bData, 0, bData.Length);
return Encoding.UTF8.GetString(bResult);
}
catch
{
throw;
}
}
}

}//ns

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Encrypt_And_Decrypt_PrivateKey
{
class Program
{
static void Main(string[] args)
{
byte[] bKey8 = UTF8Encoding.UTF8.GetBytes("12345678");
byte[] bKey16 = UTF8Encoding.UTF8.GetBytes("1234567890123456");
byte[] bKey32 = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");

string data = "Hello,I am Jie.";

Console.WriteLine("Aes Sample");
AesSample aes = new AesSample();
string aesData = "";
aesData = aes.Encrypt(data, bKey32);
Console.WriteLine("AES Encrypt:{0}", aesData);
Console.WriteLine("AES Decrypt:{0}", aes.Decrypt(aesData, bKey32));
Console.WriteLine();

Console.WriteLine("Des Sample");
DesSample des = new DesSample();
string desData = "";
desData = des.Encrypt(data, bKey8);
Console.WriteLine("DES Encrypt:{0}", desData);
Console.WriteLine("DES Decrypt:{0}", des.Decrypt(desData, bKey8));
Console.WriteLine();

Console.WriteLine("RC2 Sample");
Rc2Sample rc2 = new Rc2Sample();
string rc2Data = "";
rc2Data = rc2.Encrypt(data, bKey8);
Console.WriteLine("RC2 Encrypt:{0}", rc2Data);
Console.WriteLine("RC2 Decrypt:{0}", rc2.Decrypt(rc2Data, bKey8));
Console.WriteLine();

Console.WriteLine("Rijndael Sample");
RijndaelSample rijndael = new RijndaelSample();
string rijndaelData = "";
rijndaelData = rijndael.Encrypt(data, bKey32);
Console.WriteLine("Rijndael Encrypt:{0}", rijndaelData);
Console.WriteLine("Rijndael Decrypt:{0}", rijndael.Decrypt(rijndaelData, bKey32));
Console.WriteLine();

Console.WriteLine("TripleDES Sample");
TripleDESSample tripleDES = new TripleDESSample();
string tripleDESData = "";
tripleDESData = tripleDES.Encrypt(data, bKey16);
Console.WriteLine("TripleDES Encrypt:{0}", tripleDESData);
Console.WriteLine("TripleDES Decrypt:{0}", tripleDES.Decrypt(tripleDESData, bKey16));
Console.WriteLine();

Console.Read();
}

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