`
nannan408
  • 浏览: 1784060 次
  • 性别: 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
分享到:
评论

相关推荐

    sqlserver2005的base64加密解密函数

    在SQL Server 2005中,Base64编码是一种常用的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输或存储非ASCII字符的数据。Base64编码能够确保数据在传输过程中不被篡改,因为它是通过特定...

    SqlServerBase64 加密解密.rar

    综上所述,SQL Server支持Base64编码和解码,对于包含中文、数字和字母的数据同样适用。通过理解Base64的工作原理和SQL Server的相关函数,我们可以灵活地在数据库中处理加密和解密操作,满足数据安全的需求。在实际...

    轻松实现Sql Server 2005下的Base64、MD5、SHA1算法函数

    在SQL Server 2005中,我们可以使用`VARBINARY`和`VARCHAR`数据类型结合内置函数来实现Base64编码与解码: 1. **Base64编码**: ```sql CREATE FUNCTION dbo.Base64Encode(@input VARCHAR(MAX)) RETURNS VARCHAR...

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

    中文字符在计算机中通常以多字节形式存储,因此在进行Base64编码时,需要特殊处理以确保中文字符能够正确无误地被编码和解码。"完美支持中文"意味着该Base64工具不仅能够处理ASCII字符,还能够正确处理UTF-8编码的...

    Base64编解码-crx插件

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

    文件压缩(文件转换为base64)

    2. **解码Base64**:将Base64字符串解码回二进制数据,这可以通过创建一个新的Blob对象完成。 3. **压缩图像**:使用像`compress-to-jpeg`或`compress-file`这样的JavaScript库,对Blob对象进行压缩。这些库通常会...

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

    6. **VB和C#中的Base64操作**:在VB中,可以使用`Convert.ToBase64String`和`Convert.FromBase64String`方法进行Base64编码和解码;而在C#中,对应的函数是`Convert.ToBase64String`和`Convert.FromBase64String`。...

    Base64、MD5加解密

    例如,可以使用`Base64.getEncoder().encodeToString()`方法对二进制数据进行编码,`Base64.getDecoder().decode()`方法进行解码。 MD5的计算则可以通过java.security.MessageDigest类来完成。首先需要创建一个MD5...

    Cain4.9中文版

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

    wsdl.rar_WEBservice-Sqlserver_java webservice_webservice sgip_w

    在Web Service的开发中,数据交换通常是通过SOAP(Simple Object Access Protocol)进行的,而图片数据的处理则涉及到二进制数据的编码和解码,例如Base64编码。这可能包括创建一个服务来接收图片数据,将其存储到...

    C++Review 实现与数据库连接并用到Base64算法和随机数算法代码

    在C++中,可以使用开源库如`openssl`或自定义函数实现Base64编码和解码。Base64算法将每3个字节的数据转换为4个Base64字符,不足3字节的数据会用填充位'='表示,并根据规则进行编码。 3. **随机数算法**:在C++中,...

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

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

    破解屏保、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...

    破解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、...

    java sqlserver text 类型字段读取方法

    在示例代码中,`Content`字段的值被编码为Base64字符串,所以我们需要解码它。 ```java String fileName = rs.getString("FileName"); // 假设还有文件名字段 String contentBase64 = rs.getString("Content"); ...

    上传多张图片

    // 将Base64解码并保存为文件 var imageData = Convert.FromBase64String(model.ImageBase64); var savePath = Path.Combine(Server.MapPath("~/uploads"), model.ImageName); File.WriteAllBytes(savePath, ...

    开发用到的jar包

    6. **sun.misc.BASE64Decoder.jar**: 这个JAR文件包含了Sun Microsystems提供的一个基础库,其中的BASE64Decoder类用于解码Base64编码的数据。Base64是一种常见的数据编码方式,常用于在网络上传输二进制数据。虽然...

    asp编码解码器VVSOFTAspDecoder.rar

    1. **编码转换**:可以将ASP代码从一种编码方式转换为另一种,例如从Base64编码转换为明文或者从URL编码转换为正常文本。 2. **混淆解密**:对于一些经过混淆处理的ASP代码,AspDecoder可能有特定的算法来尝试解析...

Global site tag (gtag.js) - Google Analytics