zoukankan      html  css  js  c++  java
  • 对字符串进行加密解密

    create view v_rand

    as

        select c=unicode(cast(round(rand()*255,0) as tinyint))

    Go

     

    create function f_jmstr

    (

        @str varchar(8000),

        @type bit

    )

    returns varchar(8000)

    /*

    *参数说明

    *str:要加密的字符串或已经加密后的字符

    *type:操作类型--0加密--解密

    *返回值说明

    *当操作类型为加密时(type--0):返回为加密后的str,即存放于数据库中的字符串

    *当操作类型为解密时(type--1):返回为实际字符串,即加密字符串解密后的原来字符串

    */

    As

    begin

        declare @re varchar(8000)--返回值

        declare @c int--加密字符

        declare @i int

        /*

        *加密方法为原字符异或一个随机ASCII字符

        */

        if @type=0--加密

        begin

           select @c=c,@re='',@i=len(@str) from v_rand

           while @i>0

           select @re=nchar(unicode(substring(@str,@i,1))^@c^@i)+@re

                   ,@i=@i-1

           set @re=@re+nchar(@c)

        end

        else--解密

        begin

           select @i=len(@str)-1,@c=unicode(substring(@str,@i+1,1)),@re=''

           while @i>0

           select @re=nchar(unicode(substring(@str,@i,1))^@c^@i)+@re ,@i=@i-1

        end

    return(@re)

    end

    go

     

    --测试

    declare @tempstr varchar(20)

    set @tempstr='  1 2   3aA'

    select '原始值:',@tempstr

    select '加密后:',dbo.f_jmstr(@tempstr,0)

    select '解密后:',dbo.f_jmstr(dbo.f_jmstr(@tempstr,0),1)

     

    --输出结果

    /*

    原始值:      1 2   3aA

    加密后:    __0'15`'17__°{1

    解密后:      1 2   3aA

    */

  • 相关阅读:
    Linux sort命令使用方法
    Linux awk命令使用方法
    Linux sed命令使用方法
    Python调用外部系统命令
    [ Python入门教程 ] Python正则表达式与re模块介绍
    [ Python入门教程 ] python异常处理方法
    Python操作远程服务器paramiko模块介绍
    Hibernate的应用及注解开发
    JQuery Validate插件与实现
    Struts2的核心——拦截器
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244757.html
Copyright © 2011-2022 走看看