为什么在 SQL Server 中解密给定的输入值会返回 NULL?

问题描述 投票:0回答:1

当我使用 belpow 查询时,它会返回实际数据

declare @encrypt varbinary(200);
select @encrypt = EncryptByPassPhrase('key','VALUE');
select convert(varchar(100),DecryptByPassPhrase('key',@encrypt));  
//returns back "VALUE"

但是当我尝试将加密值直接传递给函数时:

declare @encrypt varbinary(200);
select EncryptByPassPhrase('key','VALUE');   //suppose value is kjkljggkjkhkj
select convert(varchar(100),DecryptByPassPhrase('key','kjkljggkjkhkj'));

上述查询返回 NULL 作为输出。我尝试将加密值转换为 varbinary(200),然后传递给函数,但仍然得到 NULL 输出。这里可能有什么问题?

sql-server database encryption encryption-symmetric
1个回答
0
投票

这里有一些建议

声明@加密varbinary(200) 选择 @encrypt = EncryptByPassPhrase('key','VALUE') select Convert(varchar(100),DecryptByPassPhrase('key',@encrypt)) // 这很好用

// 现在,如果您想通过直接将加密值作为字符串传递来解密: 声明 @cryptedString varchar(200); set @encryptedString = Convert(varchar(200), @encrypt, 1) // 将 varbinary 转换为 varchar select Convert(varchar(100),DecryptByPassPhrase('key', @encryptedString)) // 这应该有效

© www.soinside.com 2019 - 2024. All rights reserved.