Sql server SQL Server中已加密数据的解密(通过Java应用程序)

Sql server SQL Server中已加密数据的解密(通过Java应用程序),sql-server,cryptography,Sql Server,Cryptography,我的情况是:我的数据库中有一列包含加密数据。此列是常规VARCHAR列。该数据由Java应用程序使用DES/ECB/PKCS5Padding算法加密。我有权访问用于加密此数据的密钥文件 我需要的是使用T-SQL对这些数据进行解密。可能吗 我知道SQL Server加密/解密机制,但它们似乎是用于“新”数据(我正在创建表并开始将数据放入其中)的,这些数据由SQL Server本身加密,而不是由其他应用程序加密 事实上,这和这个很相似,但答案和C有关,所以我的情况不是这样 我发现可以使用以下方法完成

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

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

我知道SQL Server加密/解密机制,但它们似乎是用于“新”数据(我正在创建表并开始将数据放入其中)的,这些数据由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会假定其中包含salt

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


我的目标是我可以用T-SQL解密一些用Java甚至在线工具(例如)加密的字符串。

你能做到吗?不,很遗憾。