簡體   English   中英

SQL Server 2008版本的Informix ENCRYPT_TDES

[英]SQL SERVER 2008 version of Informix ENCRYPT_TDES

我們有一個正在使用notifyix ENCRYPT_TDES函數的應用程序。 我發現SQL SERVER具有一個稱為ENCRYPTBYPASSPHRASE的函數,該函數也使用TDES。 但是,結果卻大不相同。 SQL SERVER返回一個varbinary,而Informix返回一個BASE64字符串。

這是Informix語句的示例:

SELECT encrypt_tdes('12345CF','thepassword') from sometable

結果示例:

18A//AAAACA150blzB2/uXYO8vtaqBZpg==

這是我對SQL SERVER 2008所做的工作(但與Informix解密不兼容,反之亦然):

DECLARE @bin AS VARBINARY(256)
SET @bin = ENCRYPTBYPASSPHRASE('thisisthepassword', '12345CF')
select CAST(N'' AS XML)
    .value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'VARCHAR(MAX)')

結果示例:

AQAAAOVcL3PwM28dUENp1JF845auaRH9loIrDA==

我假設我的問題可能在於編碼。 但是,我似乎無法弄清楚這個問題。 如果無法通過內置的MS SQL函數進行操作,那么您是否知道VB.NET代碼可以加密並返回與Informix兼容的字符串,因此我可以添加.NET dll並在我的MS SQL查詢中使用它。

謝謝你的幫助!

編輯:誰能幫助我找到一種將Informix ENCRYPT_TDES函數模仿為C#或VB.NET的方法?

EncryptByPassPhraseCREATE SYMMETRIC KEY中指定的密鑰僅用作生成實際密鑰的種子(我不知道它們使用的算法,但我想像Rfc2898DeriveBytes類的Rfc2898DeriveBytes )。

您可能能夠在C#中復制Informix邏輯,並將其放置在SQL CLR函數中。 從注釋中看來,該算法可能只是計算給定密碼的SHA-1哈希,然后將其用作實際密鑰。 請參見SHA1CryptoServiceProviderSystem.Security.Cryptography.TripleDESProvider

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM