0

WIN-PAK 在他们的后端 sql server db 中进行了一些“有问题的”架构更改,它破坏了我的查询。以前的 nvarchar(35) 已更改为 varbinary(MAX)。在我编写的一些附加组件中,我需要能够将其转换回人类可读的字符串。麻烦的是,我一开始不知道他们是如何进行编码的。

如何转换 0x004E2B296D0F5707CA3D0EDA6FBC05CB010000007FFBED343A41DB3016798FA2B6FAFE8A4460E1ACB58CBA05BBE34AA0A133C6B8BE0F2F95C153CB658EABF4EFA09931EC

回到字符串“PILLOW”?

我已经联系了霍尼韦尔 WIN-PAK 支持,但由于我不是授权经销商,他们不会与我交谈。我已经尝试了明显的 convert 和 cast 语句,但没有成功。我已经做了通常的论坛潜伏。我希望了解这些变化的人可以加入进来,或者经常处理转换数据的人可以解释 6 个字符如何变成那个凌乱的二进制文件。

4

1 回答 1

1

看起来他们正在使用 Microsoft SQL Servers 加密

这是一个很好的概述:

https://www.sqlshack.com/an-overview-of-the-column-level-sql-server-encryption/

我能够使用以下方法对 CardHolder 表进行解码(假设它是通用加密密钥):

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'WPMasterKey!@#'; 

--CREATE CERTIFICATE WPEnctCertificate WITH  SUBJECT =   'WP Personnel Data Ids'

OPEN SYMMETRIC KEY WPEnctSymmetricKey DECRYPTION BY CERTIFICATE WPEnctCertificate
SELECT TOP (1000) [RecordID]
      ,[AccountID]
      ,[SubAccountID]
      ,[TimeStamp]
      ,[UserID]
      ,[NodeID]
      ,[Deleted]
      ,[UserPriority]
      ,CONVERT(nvarchar, DecryptByKey([FirstName])) as FirstName
      ,CONVERT(nvarchar, DecryptByKey([LastName])) as LastName     
      ,[FirstName]
      ,[LastName]
      ,[Note1]      
  FROM [WIN-PAK PRO].[dbo].[CardHolder] 

我认为 WPEnctCertificate 应该已经在您的系统中,但如果没有,请取消注释该行并运行它。

于 2020-08-24T20:20:09.183 回答