using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
public partial class UserDefinedFunctions
{
//加密
[Microsoft.SqlServer.Server.SqlFunction]
public static string f_encrypt(string str)
{
string output = "";
String Key = @")[FDf0_gefcaj-+oEfgD8<Kl'e9lju"; //密钥
Byte[] bKey = new Byte[32];
byte[] byteArray = Encoding.UTF8.GetBytes(str);
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
RijndaelManaged aes = new RijndaelManaged();
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
aes.Key = bKey;
MemoryStream MenStream = new MemoryStream();
CryptoStream CryStream = new CryptoStream(MenStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
try
{
CryStream.Write(byteArray, 0, byteArray.Length);
CryStream.FlushFinalBlock();
output = Convert.ToBase64String(MenStream.ToArray());
}
catch { }
finally
{
CryStream.Close();
MenStream.Close();
aes.Clear();
}
return output;
}
//解密
[Microsoft.SqlServer.Server.SqlFunction]
public static string f_decrypt(string str)
{
string output = "";
String Key = @")[FDf0_gefcaj-+oEfgD8<Kl'e9lju"; //密钥
Byte[] bKey = new Byte[32];
Byte[] bStr = Convert.FromBase64String(str);
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
RijndaelManaged aes = new RijndaelManaged();
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
aes.Key = bKey;
MemoryStream MenStream = new MemoryStream(bStr);
CryptoStream CryStream = new CryptoStream(MenStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
try
{
byte[] tmp = new byte[bStr.Length + 32];
int len = CryStream.Read(tmp, 0, bStr.Length + 32);
byte[] ret = new byte[len];
Array.Copy(tmp, 0, ret, 0, len);
output = Encoding.UTF8.GetString(ret);
}
catch { }
finally
{
CryStream.Close();
MenStream.Close();
aes.Clear();
}
return output;
}
};