数据库单个字段加密

数据库加密使我们现在经常探讨的一个话题,那么数据库中单个字段怎么加密?我们今天就以实例给大家讲解一下。

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 dbo.f_jmstr(dbo.f_jmstr(@tempstr,0),1)
  输出结果
   1 2  3aA

用数据库给单个字段加密的主要内容就这么多,不知道大家在使用的过程中有没有什么问题呢?你如果对数据库单个字段加密还有什么比较不错的方法,也可以推荐给我。

posted @ 2012-06-26 15:52  网媒  阅读(690)  评论(0编辑  收藏  举报