在本文中,我将介绍如何在 SQL Server 中加密和解密文本。
在 SQL Server 2008 中加密和解密字符串要容易得多。
有一种方法可以加密密码,然后使用 EncryptByPassPhrase 函数将密码作为 VarBinary 存储在列中。
可以使用 DECRYPTBYPASSPHRASE 函数解密加密字段。
EncryptByPassPhrase:
此函数适用于 Triple DES 算法来加密文本。
语法
ENCRYPTBYPASSPHRASE ('PASSPHRASE','text')
EncryptBypassphrase有两个必填参数:密码短语(指定要用于导出加密密钥的数据字符串)和文本(指定要加密的文本)。
文本应该是varbinary类型。
在SQL Server 2008中加密文本示例
创建测试数据表
create table login_details ( uid int, username varchar(10), password varbinary(100) )
在表中插入一些数据
insert into login_details select 1,'smith',EncryptByPassPhrase('8','ABC') union all select 2,'jean',EncryptByPassPhrase('8','DEF') union all select 3,'michael',EncryptByPassPhrase('8','GHI')
现在查看表数据,密码将处于加密状态。
select * from login_details
DECRYPTBYPASSPHRASE
DECRYPTBYPASSPHRASE 用于解密加密数据列(字段)。 类似地 DECRYPTBYPASSPHRASE 需要两个强制参数: PASSPHRASE(生成解密密钥)和 text(指定要解密的文本)。
在SQL Server 2008中解密文本示例
要解除密码字段,执行以下代码:
SELECT uid,username, DECRYPTBYPASSPHRASE ('8',password)as DecryptedPassword FROM login_details
但此输出是varbinary格式。
因此,使用转换函数convert 将varbinary格式转换为varchar格式。
SELECT uid,username, CONVERT(varchar(50),DECRYPTBYPASSPHRASE ('8',password)) as Password FROM login_details
日期:2020-06-02 22:17:46 来源:oir作者:oir