我正在尝试加密并解密表中的一列.我的代码是这样的:
drop table EncryptString
go
create table EncryptString(db int, String varchar(100))
go
insert into EncryptString values (2, '123456789')
go
ALTER TABLE EncryptString
ADD StringEncrypted varbinary(256);
GO
declare @Pass nvarchar(512)
set @Pass = 'somepassword'
update EncryptString set StringEncrypted = ENCRYPTBYPASSPHRASE(@Pass, String, 1, convert( varbinary(128), db))
where db = 2
select * From EncryptString
SELECT db, StringEncrypted
AS 'Encrypted String', CONVERT(nvarchar,
DecryptByPassphrase('somepassword', StringEncrypted, 1
, CONVERT(varbinary, db)))
AS 'Decrypted String' FROM EncryptString
WHERE db = 2;
Run Code Online (Sandbox Code Playgroud)
为什么我的'Decrypted String'是这样的:㈱㐳㘵㠷9
谢谢
Mar*_*ith 10
您正在加密a varchar,然后在解密时nvarchar从二进制varchar表示转换为.
即你有效地做了 SELECT CAST(CAST('123456789' AS VARBINARY(30)) AS NVARCHAR(30))
如果您更改解密位,CONVERT(varchar它将按预期工作.如果需要,您可以转换varchar为nvarchar.
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |