CREATE FUNCTION [dbo].[base64_encode] ( @data VARBINARY(MAX) ) RETURNS VARCHAR(MAX) WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT BEGIN RETURN (SELECT [text()] = @data FOR XML PATH('')) END
DECLARE @t TABLE ( id VARBINARY(4) ) INSERT INTO @t SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
SELECT dbo.[base64_encode](id+207) FROM @t /* AAAA0A== AAAA0Q== AAAA0g== AAAA0w== */
谁能把我下面的算算是什么 0d/iBE+7QzzT== 和0dJL9f96ewc==
0(0A)
1(0Q)
2(0g)
3(0w)
括号内的0是数字0 不是字母o
用法类似于:加密('1101051648','csdn.net')= 'xMDEwNTE2NDgs=='
加密('1','csdn.net')= 'x=='当中介字符串变了的时候
加变后的值也变了加密('1','csdn')= 'y=='这样说你能明白吗? 需要猜到用什么方法加密,还要猜到用什么中转字符做偏移所以不太好破。简单你可以理解为2进值下 一个值加另一个值的偏移形成的加密串。
CREATE FUNCTION dbo.f_base64_decode ( @input VARCHAR(MAX) )
RETURNS VARBINARY(MAX)
AS
BEGIN
DECLARE @base64 CHAR(64) ,
@pos INT ,
@len INT ,
@output VARBINARY(MAX) ;
SELECT @base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' ,
@pos = 1 ,
@len = LEN(@input) ,
@output = 0x ;
IF @input = ''
RETURN 0x ;
IF @len % 4 > 0
OR @len IS NULL
RETURN NULL ;
WHILE @pos < @len
BEGIN
SELECT @output = @output + CONVERT(BINARY(1), ( ( v1 & 63 )
* 4 ) | ( ( v2
& 48 ) / 16 ))
+ CONVERT(BINARY(1), ( ( v2 & 15 ) * 16 ) | ( ( v3
& 60 ) / 4 ))
+ CONVERT(BINARY(1), ( ( v3 & 3 ) * 64 ) | ( ( v4 & 63 )
/ 1 )) ,
@pos = @pos + 4
FROM ( SELECT v1 = CHARINDEX(SUBSTRING(@input, @pos + 0,
1) COLLATE Chinese_PRC_BIN,
@base64) - 1 ,
v2 = CHARINDEX(SUBSTRING(@input, @pos + 1,
1) COLLATE Chinese_PRC_BIN,
@base64) - 1 ,
v3 = CHARINDEX(SUBSTRING(@input, @pos + 2,
1) COLLATE Chinese_PRC_BIN,
@base64) - 1 ,
v4 = CHARINDEX(SUBSTRING(@input, @pos + 3,
1) COLLATE Chinese_PRC_BIN,
@base64) - 1
) A ;
END ;
RETURN(SUBSTRING(@output, 1, @len / 4 * 3 - 3 + CHARINDEX('=', RIGHT(@input, 2) + '='))) ;
END ;
GOdeclare @t table (col varchar(4))
insert into @t
select '0A==' union all
select '0Q==' union all
select '0g==' union all
select '0w=='select dbo.f_base64_decode(col) from @t
/*
0xD0
0xD1
0xD2
0xD3
*/
RETURNS VARCHAR(MAX)
WITH SCHEMABINDING,
RETURNS NULL ON NULL INPUT
BEGIN
RETURN (SELECT [text()] = @data FOR XML PATH(''))
END
DECLARE @t TABLE ( id VARBINARY(4) )
INSERT INTO @t
SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4
SELECT dbo.[base64_encode](id+207) FROM @t
/*
AAAA0A==
AAAA0Q==
AAAA0g==
AAAA0w==
*/