EncryptByPassPhrase與DecryptByPassPhrase的淺說


在sqlserver中,可以通過內置函數EncryptByPassPhrase對字符串進行加密,通過內置函數DecryptByPassPhrase對加密后的密文進行解密。

代碼如下:

declare @UserName nvarchar(100)='張三'
declare @Encrypt varbinary(max)=null
--加密
select @Encrypt=ENCRYPTBYPASSPHRASE('12312#$#2sj',@UserName)
select @Encrypt as EncryptText
--解密
select CONVERT(nvarchar,DECRYPTBYPASSPHRASE('12312#$#2sj',@Encrypt)) as DecryptText

 

 

 EncryptByPassPhrase與DecryptByPassPhrase在配對的時候,一定要記住加密時字符串的類型,nvarchar和varchar是不一樣的。加密時為nvarchar,解密時轉為varchar,解密后的字符串是亂碼。加密和解密時,對應的字符串類型一定要一樣,同是nvarchar,或同是varchar。為何?編碼不一樣!

如下代碼:

declare @UserName nvarchar(100)='張三'
declare @Encrypt varbinary(max)=null
--加密
select @Encrypt=ENCRYPTBYPASSPHRASE('12312#$#2sj',@UserName)
select @Encrypt as EncryptText
--解密
select CONVERT(varchar,DECRYPTBYPASSPHRASE('12312#$#2sj',@Encrypt)) as DecryptText

@UserName的累心是nvarchar,而以varchar類型作為解密的文本類型,則會產生如下錯誤結果:

 

 

參考資料:https://docs.microsoft.com/zh-cn/sql/t-sql/functions/encryptbypassphrase-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM