sql base64解码函数

函数功能说明:

传入参数:任意一个base64编码后的密文

返回值: base64解码后的明文

/**

  base64 解码 sql实现

**/

ALTER FUNCTION [dbo].[f_base64_decode](
 @input varchar(max)   --base64编码后的字符串
)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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值