`
nannan408
  • 浏览: 1756959 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sqlserver 中文base64编解码

 
阅读更多
1.前言。
   如题,编解码格式都为gbk。编码可以不用函数。直接用for xml 。如:
SELECT (SELECT CONVERT(varbinary(max), '分为服务') FOR XML PATH(''), TYPE).value('/', 'nvarchar(max)')
2.解码。

CREATE FUNCTION dbo.base64_decode
(
@encoded_text varchar(max)
)
RETURNS varbinary(max)
AS
BEGIN
DECLARE
    @output varbinary(max),
    @block_start int,
    @encoded_length int,
    @decoded_length int,
    @mapr binary(122)
IF LEN(@encoded_text) & 3 > 0
    OR @encoded_text LIKE '%[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=]%' COLLATE Latin1_General_Bin
    RETURN NULL
SET @output = 0x
-- The nth byte of @mapr contains the base64 value of the character with an ASCII value of n.
-- eg. 65th byte = 0x00 = 0 = value of 'A'
SET @mapr =
          0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -- 1-33
        + 0xFFFFFFFFFFFFFFFFFFFF3EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF -- 33-64
        + 0x000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF -- 65-96
        + 0x1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233 -- 97-122
--get the number of blocks to be decoded
SET @encoded_length = LEN(@encoded_text)
SET @decoded_length = @encoded_length / 4 * 3
--for each block
SET @block_start = 1
WHILE @block_start < @encoded_length
BEGIN
    --decode the block and add to output
    --BINARY values between 1 and 4 bytes can be implicitly cast to INT
    SET @output = @output +
        CAST(CAST(
              SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start    , 1)), 1) * 262144
            + SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start + 1, 1)), 1) * 4096
            + SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start + 2, 1)), 1) * 64
            + SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start + 3, 1)), 1)
        AS int) AS binary(3))
    SET @block_start = @block_start + 4
END
IF RIGHT(@encoded_text, 2) = '=='
    SET @decoded_length = @decoded_length - 2
ELSE IF RIGHT(@encoded_text, 1) = '='
    SET @decoded_length = @decoded_length - 1
RETURN SUBSTRING(@output, 1, @decoded_length)
END





测试:select convert(varchar(2000),dbo.base64_decode('t9bOqrf+zvE=')  )
测试结果为:分为服务
3.注意事项。
  (1)编解码用utf-8毫无意义,以上都是针对gbk,utf-8的可以在网上找下,utf-8的和gbk的编解码方式不同。
0
0
分享到:
评论

相关推荐

    base64 编码与解码 中文完美支持

    完美支持中文 base64 编码与解码 目前速度最快 效率最高的编码与解码

    Base64编解码-crx插件

    Base64编解码 支持中文base64编码,支持二维码编码 支持语言:English (United States),中文 (简体)

    VB C# 图片 文字 加密 解密 base64

    VB C# 图片 文字 加密 解密 base64VB C# 图片 文字 加密 解密 base64VB C# 图片 文字 加密 解密 base64

    Cain4.9中文版

    Cain4.9中文版,绝对是中文版是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop...

    破解屏保、PWL密码

    这是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、 Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database...

    著名的密码破解软件cain

    这是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database...

    Cain&Abel; v4.9.43绿色英文版(密码暴力破解软件)

    这是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database...

    破解CainAbel-v4.9.46.zip

    屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database口令解码、Cisco PIX...

    常用sql整理

    1、base64解码.txt 2、行转列.txt 3、列转行.txt 4、BULK INSERT.txt 5、双色球.txt 6、删除完全重复数据.txt 7、快速备份.txt 8、计算table的空间使用量.txt 9、分割sql.txt 10、导出Html.txt 11、top m n.txt 12、...

    oracle各种文档

    数据仓库建模技术.pdf 在数据库中实现base64编码和解码.doc 触发器使用教程和命名规范.doc TransactSQL.doc Schema常用脚本.doc rsultset.doc oracle傻瓜手册 ORACLE 中存储过程定期分割表.doc ORACLE 物理文件大小...

    extlib.dll具体应用,PB10测试通过

    //获得当前网段内的SQLSERVER服务器列表 function string GetSQLServerList() library 'extlib.dll' ALIAS FOR "GetSQLServerList;Ansi" //base64编码 function Integer Base64EnCode(string as_code,string Code...

    风越ASP代码生成器 2.4

    常用加解密、编解码(DES、MD5、SHA、BASE64) 批量提取文本,支持正则表达式,可将HTML等文件中指定内容存入数据库 批量查找替换,支持正则表达式 批量文件、文件夹改名,支持正则表达式 正则表达式测试器...

    易语言模块大全(401个)

    BASE64编解码模块.ec 系统后台服务.ec 易容大师.ec 保证显示.ec 注册热键(支持多热键).ec DIY热键框模块.ec 代码编辑器部分模块.ec Sqlite数据库加强.ec 自解压制作.ec 注册热键_支持多热键(20050816).ec 操作外部...

    风越ASP代码生成器FireAspCreatorv2.9.rar

    常用加解密、编解码(DES、MD5、SHA、BASE64) 批量提取文本,支持正则表达式,可将HTML等文件中指定内容存入数据库 批量查找替换,支持正则表达式 批量文件、文件夹改名,支持正则表达式 正则表达式测试器(可设置...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    常用加解密、编解码(DES、MD5、SHA、BASE64) 批量提取文本,支持正则表达式,可将HTML等文件中指定内容存入数据库 批量查找替换,支持正则表达式 批量文件、文件夹改名,支持正则表达式 正则表达式测试器...

    风越.net代码生成器v2.9

    常用加解密、编解码(DES、MD5、SHA、BASE64) 批量提取文本,支持正则表达式,可将HTML等文件中指定内容存入数据库 批量查找替换,支持正则表达式 批量文件、文件夹改名,支持正则表达式 正则表达式测试器...

    易语言540个易模块

    Base64编解码 Bios信息 BMP滤镜模块 BoyChong-神2多方式取IP模块 BoyChong专用常用模块2.0 保存图片1.0 本土化易模块 保证显示 比较大小 编辑标准格式公文2.0 编辑框辅助功能 编码转换大全 变速模块 冰川...

    风越ASP代码生成器2.8

    常用加解密、编解码(DES、MD5、SHA、BASE64) 批量提取文本,支持正则表达式,可将HTML等文件中指定内容存入数据库 批量查找替换,支持正则表达式 批量文件、文件夹改名,支持正则表达式 正则表达式测试器...

Global site tag (gtag.js) - Google Analytics