在SQL Server 2008中加密和解密文本

在本文中,我将介绍如何在 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