【问题标题】:How to encrypt data in sql server 2012 or sql server 2008 r2?如何加密 sql server 2012 或 sql server 2008 r2 中的数据?
【发布时间】:2015-01-18 05:08:43
【问题描述】:

我想在 sql 表中加密用户名和密码。它是否有用(如果有任何在 Sql Server 中进行数据加密的方法)或者我应该从前端申请加密和解密密钥。

到目前为止,我使用 HttpUtility 和 base 64 方法从前端使用加密和解密。

【问题讨论】:

  • 您可以使用 PWDENCRYPT 来加密密码字段。在解密时,您只需使用 PWDCOMPARE 将 HASHED 密码值与明文进行比较。

标签: asp.net sql-server sql-server-2008 encryption


【解决方案1】:

列级加密(也称为单元级加密)是在 SQL Server 2005 中引入的,并且在 SQL Server 的所有版本中都可用,包括免费的 SQL Server Express 版本。要使用单元级加密,必须将架构更改为 varbinary,然后重新转换为所需的数据类型。这意味着必须更改应用程序以支持加密解密操作;此外,它还会影响性能。数据库的加密发生在页面级别,但是当这些页面被读取到缓冲池时,它们会被解密。可以使用密码、非对称密钥、对称密钥或证书对数据进行加密。支持的列级加密算法是具有 128,196,256 位密钥的 AES 和 3DES。了解有关列级加密的更多信息

有关信息请阅读本文http://technet.microsoft.com/en-us/library/ms179331.aspx

【讨论】:

    【解决方案2】:

    您可以在他的评论中使用PWDENCRYPTPWDCOMPARE like @ Paresh J 在新用户插入时使用PWDENCRYPT like

    Declare @Uname Varchar(250)='User2'
    Declare @Pwd Varchar(250)='password'
    
    Declare @UserTbl Table
    (
    id int identity(1,1),
    Uname Varbinary(250),
    Pwd Varbinary(250)
    )
    
    Insert Into @UserTbl(Uname,Pwd)
    select PWDENCRYPT(@Uname),PWDENCRYPT(@Pwd)
    

    并且在该用户登录期间使用PWDCOMPARE like

    Declare @UnameEncr Varbinary(max)
    Declare @PwdEncrypt Varbinary(max)
    
    Select @UnameEncr=Uname,@PwdEncrypt=Pwd from @UserTbl where id=1
    
    Select LoginMessage=Case When PWDCOMPARE(@Uname,@UnameEncr)=1 
                                  and PWDCOMPARE(@Pwd,@PwdEncrypt)=1  
                                  Then 'Correct Username / Password' 
                                  else 'Incorrect Username / Password' end 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多