【问题标题】:SQL Server truncating encrypted valuesSQL Server 截断加密值
【发布时间】:2016-09-16 17:08:24
【问题描述】:

我遇到了 SQL Server 截断加密值的问题。这似乎很奇怪,因为它加密的字符串的长度根本不长。

如果我在查询窗口中执行以下 SQL:

OPEN SYMMETRIC KEY MySymmetricKey DECRYPTION BY CERTIFICATE MyCertificate; 

SELECT 
CONVERT(nvarchar, DecryptByKey(
ENCRYPTBYKEY(KEY_GUID('MySymmetricKey'), convert(varbinary(8000), cast('hellothisisastringwhichisntverylong' AS nvarchar(max))))
))

输出是:“hellothisisastringwhichisntver”

我查看了很多示例,但是我看不出我做错了什么?

我还应该指出,我已经尝试过不使用 nvarchar(max) 和 varbinary(8000) 的变体,它们不会改变结果。

干杯!

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您的 CONVERT 语句未指定要使用的 NVARCHAR 长度,因此它使用默认的 NVARCHAR(30)

    https://technet.microsoft.com/en-us/library/ms187928(v=sql.100).aspx

    试试这个(或者你想要的任何其他长度):

    OPEN SYMMETRIC KEY MySymmetricKey DECRYPTION BY CERTIFICATE MyCertificate; 
    
    SELECT 
    CONVERT(nvarchar(100), DecryptByKey(
    ENCRYPTBYKEY(KEY_GUID('MySymmetricKey'), convert(varbinary(8000), cast('hellothisisastringwhichisntverylong' AS nvarchar(max))))
    ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 2012-11-18
      相关资源
      最近更新 更多