SQLServer CLR 函数AES加密解密代码
发布时间:2020-12-12 13:23:42 所属栏目:MsSql教程 来源:网络整理
导读: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 = ""; S
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,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.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,bStr.Length + 32); byte[] ret = new byte[len]; Array.Copy(tmp,ret,len); output = Encoding.UTF8.GetString(ret); } catch { } finally { CryStream.Close(); MenStream.Close(); aes.Clear(); } return output; } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |