在 WIN-PAK 4.7 MSSQL 数据库中解码二进制数据

Decoding Binary Data in WIN-PAK 4.7 MSSQL Database

WIN-PAK 在其后端 sql 服务器数据库中进行了一些"questionable" 架构更改,它破坏了我的查询。什么是 nvarchar(35) 已更改为 varbinary(MAX)。在我写的一些附加组件中,我需要能够将其转换回人类可读的字符串。麻烦的是,我不知道他们首先是如何进行编码的。

如何转换 0x004E2B296D0F5707CA3D0EDA6FBC05CB010000007FFBED343A41DB3016798FA2B6FAFE8A4460E1ACB58CBA05BBE34AA0A133C6B8BE0F2F95C153CB658=9EAB31ECA[]

返回字符串 "PILLOW" ?

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

看起来他们正在使用 Microsoft SQL 服务器加密

这里有一个很好的概述:

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

我能够使用以下内容(假设它是通用加密密钥)解码 CardHolder table:

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 应该已经在您的系统中,但如果没有,请取消注释该行并 运行 它。