2015-06-10 81 views
-2

我的應用程序流程如下。在Java中加密並在MS SQL Server中解密

Java應用程序----> MS SQL(表)---> MS SQL(存儲過程)--->另一個DB

這裏從Java應用程序我正在推,我想,即使某些敏感信息隱藏DBA。所以我想加密這些列值從Java和存儲過程之前推到另一個數據庫我想解密它在SQL代碼。

但是問題是MS SQL不允許自定義密鑰傳遞進行加密或解密。它自己生成這些密鑰,我們無法看到這些密鑰值。所以我不能解密它們,因爲我不能在SQL DecryptByKey Mehtod上傳遞我的密鑰(我用它來加密Java代碼中的值)。我正在使用3DES加密方案。 任何人都可以幫助我解決這個問題。

現在的核心問題是。我如何在MS SQL Server 2008中解密任何基於3DES的加密值 (我在Java代碼中對此值進行加密),當時我知道加密值的所有詳細信息,如鹽和其他東西。 SQL中是否有任何方法可以傳遞我的自定義密鑰並解密值。

任何幫助將深表謝意。

+0

在兩端使用標準的加密/解密方案,它將工作:http://stackoverflow.com/questions/17113113/interop-encryption-decryption-between-java-net-with-aes-and-specifying -iv-and-ke – duffymo

+0

DuffyMo。問題是SQL服務器正在生成自己的密鑰,並且不支持我可能傳遞的密鑰。它從PassPhrases(我們通過)生成密鑰,而生成密鑰的算法不在Open中。所以即使我在Java和SQL中都使用3DES ..將在SQL中生成的密鑰將不會被我知道。 [LINK] https://social.msdn.microsoft.com/forums/sqlserver/en-US/4b56da88-1166-4a96-bfb5-d2694e03d7b5/recreate-symmetric-key-on-different-server-database –

+0

鍵必須兩者之間共享:http://stackoverflow.com/questions/20227/how-do-i-use-3des-encryption-decryption-in-java – duffymo

回答

0

無法查看SQL服務器密鑰,因此我們無法解密任何由SQL服務器加密的內容。

我不得不改變我對這種情況的方法。