簡體   English   中英

在.Net 4中加密SQL Server / Decrypt

[英]Encrypt in SQL Server / Decrypt in .Net 4

我理解這可能是這個問題的重復: 如何加密sql server中的數據並在.net應用程序中解密 - 但這是在大約一年前問的,我希望可能有進步或其他東西。

無論如何,我們有一個應用程序,FTP文件從一個位置到另一個位置,顯然FTP配置文件需要一個密碼。 我們有一個包含配置文件所有詳細信息的數據庫,但我們需要加密密碼。 我們已經考慮過在SQL中解密然后將它們發送到應用程序,但這意味着通過網絡發送它,這是我們不想要的。

我們想要加密存儲的密碼,將細節傳遞給應用程序,然后在應用程序中解密它們。

這可能嗎?

從我的谷歌搜索,它似乎不是,但我希望有人有一個技巧或東西。

提前致謝!

注意:我使用的是.Net 4和SQL Server 2008 R2。

使用SQL Server列加密API函數(如EncryptByKey )的加密和解密與任何客戶端加密或解密都不兼容,因為它使用內部的,未記錄的存儲格式。

我會說,由於SQL Server提供了網絡連接機密性,因此您不擔心通過網絡發送密碼,請參閱加密與SQL Server的連接

您最好的選擇是將密碼存儲在加密列中,並使用內置的SQL Server加密函數( EncryptByKeyDecryptbyKey )或使用透明數據庫加密 標准也選擇一個或另一個主要是許可要求(TDE要求企業版),因為TDE在每個方面都優於列級加密。 無論您選擇何種解決方案,您都會很快意識到主要問題是密鑰管理,並且SQL Server提供了一個可行的故事,請參閱加密層次結構 無論您如何設計解決方案,都不需要應用程序加密或解密密碼本身,如果您需要,那么您顯然是錯誤的路徑(因為應用程序無法管理密鑰本身),所以應該永遠不會出現CLR加密和SQL加密兼容性的問題。

Simpy在.net中加密和解密密碼,就SQL而言,它只是存儲文本。

在我看來,“明顯的答案”是你需要在SQL服務器和dotNet中使用相同的算法(或適當的匹配加密/解密對)。 因為前者使用T-SQL而后者是C#/ VB之類的托管代碼語言,所以你必須用不同的語言編寫/獲取算法的兩半。 育。

您是否考慮過使用SQL CLR 這樣你就可以在C#中編寫兩個部分,並從SQL運行該代碼。

我有副本這個坐在我書架上一段時間,但從來沒有鑽研過深到它-這主要是因為,雖然在主很冷靜-我從來沒有發現一個“需要”使用SQLCLR。 然而你的問題聽起來像一個強大的候選人:-)

HTH :-)

達米安

暫無
暫無

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

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