У нас есть приложение, которое использовало функцию informix 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, чтобы я мог добавить DLL-библиотеку .NET и использовать ее в своем запросе MS SQL.
Спасибо за любую помощь!
РЕДАКТИРОВАТЬ: Может кто-нибудь помочь мне найти способ имитировать функцию Informix ENCRYPT_TDES в C # или VB.NET?