在SQL Server中解密已经DES加密的数据(通过Java应用程序)

时间:2014-12-09 18:25:37

标签: sql-server cryptography

以下是我的情况:我的数据库中有一列包含加密数据的列。此列是常规VARCHAR列。此数据由Java app使用DES/ECB/PKCS5Padding算法加密。我可以访问用于加密此数据的密钥文件。

我需要的是使用T-SQL解密这些数据。有可能吗?

我知道SQL Server加密/解密机制,但似乎它们适用于" new"数据(我创建表并开始将数据放入其中)由SQL Server本身加密,尚未被其他应用程序加密。

实际上,它与此Encrypt In .NET / Decrypt in SQL Server类似,但答案与C#有关,所以不是我的情况......

我发现它可以使用:

完成
CREATE SYMMETRIC KEY TestSymmKey 
WITH 
ALGORITHM = DES, 
KEY_SOURCE = 'initial_bytes'
ENCRYPTION BY PASSWORD = 'windowspass'; 
GO 

DECLARE @KeyGUID UNIQUEIDENTIFIER; 
SET @KeyGUID = KEY_GUID('TestSymmKey'); 

OPEN SYMMETRIC KEY TestSymmKey DECRYPTION BY PASSWORD = 'windowspass'; 

SELECT ENCRYPTBYKEY(@KeyGUID, 'Lorem ipsum')

我可以看到相同输入的返回值是不同的:

0x0082099FAF76A74581FAA53B7FE26B8001000000DF8C5134EF5FD25C89E221C1443810AC325F28AC083C48FBEFF337D4C247B83A39294A077E54E8A2
0x0082099FAF76A74581FAA53B7FE26B800100000087FF86D86DFFD6C32F7696DCA13BF4E85A032910B85E92731D493AC4FCE9756C07DA82F5AA0F4313
0x0082099FAF76A74581FAA53B7FE26B80010000003CDA110EB854563BAB73305A52AC4B78C5A613E167E7BBC8467195832C8810683CB19CF080FCC520

这可能是某种盐机制的原因。所以我不能简单地得到一些其他应用程序生成的DES结果,并​​尝试解密它,因为SQL Server会假设盐在其中?

第一个问题是我没有看到设置填充和模式的选项(例如ECB)。 第二个是结果是二进制的,我需要它作为字符串,所以可能需要一些Base64编码器?

我的目标是我可以在T-SQL中解密一些用Java加密的字符串甚至是在线工具(例如http://www.tools4noobs.com/online_tools/encrypt/

0 个答案:

没有答案