如何用sql server中的函数为数据加密?比如:
例子表:
f1                f2
123456789       25f9e794323b453885f5181f1b624d0b
之后我在查询的时候调用那个方法,可以把f1加密成f2

解决方案 »

  1.   

    use  Tempdbgoif object_ID ( 'fn_ACITEncryption' ) is not null    drop function fn_ACITEncryptiongocreate function fn_ACITEncryption(    @Str nvarchar ( 4000), -- 加密的字符串    @Flag bit = 1, --1 、加密 0 、解密    @Key nvarchar ( 50) -- 密文)returns nvarchar ( 4000) -- 這里可轉換成二進制with EncryptionasbeginDeclare @LenStr int , @i int , @Str2 nvarchar ( 4000), @Split nvarchar ( 2), @LenKey intselect @Str= @Str+ 'A' , @LenStr= len ( @Str), @i= 1, @Str2= '' , @LenKey= Len ( @Key+ 'A' )- 1while @i< @LenStr        select     @Split= substring ( @Str, @i, 1),                @Split= nchar (( unicode ( @Split)+ case @Flag    when 1 then unicode ( substring ( @Key+ 'A' , @i% @LenKey+ 1, 1))- 1                                                                                                   when 0 then 65535- unicode ( substring ( @Key+ 'A' , @i% @LenKey+ 1, 1))                                                    else 0 end )% 65535+ cast ( @Flag as int )),                 @Str2= @Str2+ @Split, @i= @i+ 1return @Str2 endgoselect dbo. fn_ACITEncryption( N'Roy' , 1, '123' ) as 加密后字符串 /*加密后字符串------------------------------(1 個資料列受到影響 ) */select dbo. fn_ACITEncryption( N, 0, '123' ) as 解密后字符串/*解密后字符串--------------------------Roy (1 個資料列受到影響 )*/ 
      

  2.   

    不知道我这样说对不对啊,是这样的:比如:select * from talbes where username=函数(‘admin’)数据库里的username存的是:25f9e794323b453885f5181f1b624d0b而不是admin我该怎么查?
      

  3.   


    查询的方法就是你写的:
    select * from talbes where username=函数('admin')这里关键是写函数!这个函数需要一段加密算法!加密算法,有简单的,也有难的!看你自己的需求,选择合适的加密算法,自己写一个就好了...大部分加密算法的原理都是相当简单的
      

  4.   

    sql2005数据加密
    http://topic.csdn.net/u/20100502/20/c69df313-cd51-4801-8ff4-e8ab48f62d25.html?63821