【问题标题】:Decoding Binary Data in WIN-PAK 4.7 MSSQL Database在 WIN-PAK 4.7 MSSQL 数据库中解码二进制数据
【发布时间】:2019-06-03 15:10:50
【问题描述】:

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

如何转换 0x004E2B296D0F5707CA3D0EDA6FBC05CB010000007FFBED343A41DB3016798FA2B6FAFE8A4460E1ACB58CBA05BBE34AA0A133C6B8BE0F2F95C153CB658EABF4EFA09931EC

回到字符串“PILLOW”?

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

【问题讨论】:

  • 如果您不知道编码,那么将其转换回来充其量只是猜测;并且相信他们没有使用某种密钥。您最好的选择可能是做出改变的公司。如果你不能和他们交谈,你会想找一个可以的人。
  • 如果这应该代表“枕头”,那么除了简单的文本编码更改之外,还有很多事情要做,也许他们已经开始加密数据了。

标签: sql-server data-conversion honeywell


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

【讨论】:

  • 这个解决方案效果很好。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 2021-12-05
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
相关资源
最近更新 更多