U8加密:一个SHA1+Base64+一个特殊字符结尾
结果:fEqNCco3Yq9h5ZUglD3CZJT4lBs=
--SQL版
CREATE FUNCTION [dbo].[FnBase64Encode](@src varchar(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @bin VARBINARY(MAX)
SET @bin=CONVERT(VARBINARY(MAX), @src)
RETURN CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(max)')
END
Go
SELECT dbo.FnBase64Encode( HASHBYTES('SHA1','123456'))+CHAR(3)
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Security.Cryptography;
using System.IO;
using System.Text;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString U8password(string pwd)
{
byte[] MessageBytes = UnicodeEncoding.UTF8.GetBytes(pwd);
SHA1Managed SHhash = new SHA1Managed();
byte[] HashValue = SHhash.ComputeHash(MessageBytes);
return new SqlString(Convert.ToBase64String(HashValue) +(char)3);
}
}
编译创建以上程序集,创建以下函数(CLR版)
CREATE FUNCTION [dbo].[U8password](@pwd [NVARCHAR](1000))
RETURNS [NVARCHAR](1000) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [U8].[UserDefinedFunctions].[U8password]
GO