using System;
using System.Collections;
using System.Reflection;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using System;
using System.Collections;
using System.Reflection;
using System.Text;
using System.IO;
using System.Security.Cryptography;
/// <summary>
/// 加密实用程序类。
/// </summary>
public class Secure
{
private Secure()
{
}
private static Guid DefaultKey = new Guid("{073C88DF-D368-42fc-B1DA-QUNFENGWANGWANG}");
private static Guid DefaultVector = new Guid("{99A8CBE2-1174-497d-87B9-QUNFENGWANGWANG}");
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回加密串。</returns>
public static string EncryptString(string Source, string key)
{
if (key != null)
{
byte[] k = ASCIIEncoding.ASCII.GetBytes(key);
byte[] iv = DefaultVector.ToByteArray();
return EncryptString(Source, k, iv);
}
return EncryptString(Source);
}
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回加密串。</returns>
public static string EncryptString(string Source, Guid key)
{
byte[] k = key.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return EncryptString(Source, k, iv);
}
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <returns>返回加密串。</returns>
public static string EncryptString(string Source)
{
byte[] k = DefaultKey.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return EncryptString(Source, k, iv);
}
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <param name="key">密钥。</param>
/// <param name="iv">初始化向量。</param>
/// <returns>返回加密后的串。</returns>
public static string EncryptString(string Source, byte[] key, byte[] iv)
{
ASCIIEncoding textConverter = new ASCIIEncoding();
RC2CryptoServiceProvider rc2CSP = new RC2CryptoServiceProvider();
byte[] encrypted;
byte[] toEncrypt;
rc2CSP.EffectiveKeySize = 128;
// 生成加密器.
ICryptoTransform encryptor = rc2CSP.CreateEncryptor(key, iv);
// 加密数据
MemoryStream msEncrypt = new MemoryStream();
CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
// 转换数据到字节表
toEncrypt = textConverter.GetBytes(Source);
// 执行加密
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
csEncrypt.FlushFinalBlock();
// 取加密过的字节流
encrypted = msEncrypt.ToArray();
// 返回结果
return Convert.ToBase64String(encrypted);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source, string key)
{
if (key != null)
{
byte[] k = ASCIIEncoding.ASCII.GetBytes(key);
byte[] iv = DefaultVector.ToByteArray();
return DecryptString(Source, k, iv);
}
return DecryptString(Source);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source, Guid key)
{
byte[] k = key.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return DecryptString(Source, k, iv);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source)
{
byte[] k = DefaultKey.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return DecryptString(Source, k, iv);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <param name="key">密钥。</param>
/// <param name="iv">初始化向量。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source, byte[] key, byte[] iv)
{
byte[] fromEncrypt;
byte[] encrypted;
ASCIIEncoding textConverter = new ASCIIEncoding();
RC2CryptoServiceProvider rc2CSP = new RC2CryptoServiceProvider();
rc2CSP.EffectiveKeySize = 128;
// 生成解密器
ICryptoTransform decryptor = rc2CSP.CreateDecryptor(key, iv);
// 取得源加密字节流
encrypted = System.Convert.FromBase64String(Source);
// 解密字节流
MemoryStream msDecrypt = new MemoryStream(encrypted);
CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
fromEncrypt = new byte[encrypted.Length];
csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);
int n = 0;
foreach (byte b in fromEncrypt)
{
if (b != 0)
{
n++;
}
else
{
break;
}
}
byte[] bs = new byte[n];
for (int i = 0; i < n; i++)
{
bs[i] = fromEncrypt[i];
}
string s = textConverter.GetString(bs);
// 返回解密串
return s;
}
}
using System.Collections;
using System.Reflection;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using System;
using System.Collections;
using System.Reflection;
using System.Text;
using System.IO;
using System.Security.Cryptography;
/// <summary>
/// 加密实用程序类。
/// </summary>
public class Secure
{
private Secure()
{
}
private static Guid DefaultKey = new Guid("{073C88DF-D368-42fc-B1DA-QUNFENGWANGWANG}");
private static Guid DefaultVector = new Guid("{99A8CBE2-1174-497d-87B9-QUNFENGWANGWANG}");
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回加密串。</returns>
public static string EncryptString(string Source, string key)
{
if (key != null)
{
byte[] k = ASCIIEncoding.ASCII.GetBytes(key);
byte[] iv = DefaultVector.ToByteArray();
return EncryptString(Source, k, iv);
}
return EncryptString(Source);
}
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回加密串。</returns>
public static string EncryptString(string Source, Guid key)
{
byte[] k = key.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return EncryptString(Source, k, iv);
}
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <returns>返回加密串。</returns>
public static string EncryptString(string Source)
{
byte[] k = DefaultKey.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return EncryptString(Source, k, iv);
}
/// <summary>
/// 加密串。
/// </summary>
/// <param name="Source">源串。</param>
/// <param name="key">密钥。</param>
/// <param name="iv">初始化向量。</param>
/// <returns>返回加密后的串。</returns>
public static string EncryptString(string Source, byte[] key, byte[] iv)
{
ASCIIEncoding textConverter = new ASCIIEncoding();
RC2CryptoServiceProvider rc2CSP = new RC2CryptoServiceProvider();
byte[] encrypted;
byte[] toEncrypt;
rc2CSP.EffectiveKeySize = 128;
// 生成加密器.
ICryptoTransform encryptor = rc2CSP.CreateEncryptor(key, iv);
// 加密数据
MemoryStream msEncrypt = new MemoryStream();
CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
// 转换数据到字节表
toEncrypt = textConverter.GetBytes(Source);
// 执行加密
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
csEncrypt.FlushFinalBlock();
// 取加密过的字节流
encrypted = msEncrypt.ToArray();
// 返回结果
return Convert.ToBase64String(encrypted);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source, string key)
{
if (key != null)
{
byte[] k = ASCIIEncoding.ASCII.GetBytes(key);
byte[] iv = DefaultVector.ToByteArray();
return DecryptString(Source, k, iv);
}
return DecryptString(Source);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <param name="key">密钥。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source, Guid key)
{
byte[] k = key.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return DecryptString(Source, k, iv);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source)
{
byte[] k = DefaultKey.ToByteArray();
byte[] iv = DefaultVector.ToByteArray();
return DecryptString(Source, k, iv);
}
/// <summary>
/// 解密串。
/// </summary>
/// <param name="Source">源加密串。</param>
/// <param name="key">密钥。</param>
/// <param name="iv">初始化向量。</param>
/// <returns>返回解密串。</returns>
public static string DecryptString(string Source, byte[] key, byte[] iv)
{
byte[] fromEncrypt;
byte[] encrypted;
ASCIIEncoding textConverter = new ASCIIEncoding();
RC2CryptoServiceProvider rc2CSP = new RC2CryptoServiceProvider();
rc2CSP.EffectiveKeySize = 128;
// 生成解密器
ICryptoTransform decryptor = rc2CSP.CreateDecryptor(key, iv);
// 取得源加密字节流
encrypted = System.Convert.FromBase64String(Source);
// 解密字节流
MemoryStream msDecrypt = new MemoryStream(encrypted);
CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
fromEncrypt = new byte[encrypted.Length];
csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);
int n = 0;
foreach (byte b in fromEncrypt)
{
if (b != 0)
{
n++;
}
else
{
break;
}
}
byte[] bs = new byte[n];
for (int i = 0; i < n; i++)
{
bs[i] = fromEncrypt[i];
}
string s = textConverter.GetString(bs);
// 返回解密串
return s;
}
}
浙公网安备 33010602011771号