2010-06-02 157 views
1

有誰知道使用VB6加密和解密字符串以確保敏感數據安全的好方法嗎?加密和解密字符串

另外,有沒有一種可以在VB6和.NET之間共享的加密方法? 示例:

使用VB6應用程序將加密字符串寫入數據庫,但如果可能的話,還需要使用.net框架在c#.net應用程序中讀取解密值。

謝謝!

+2

你的問題有根本性的缺陷reasonsing:**加密並不能保證敏感數據是安全的**。加密確保敏感數據被**加密**。安全的數據和加密的數據不是相同的東西,只有鎖定的汽車纔是安全的汽車。鎖定的汽車每天都會被偷,被砸碎,炸燬或高速公路上被砸。爲了確保數據的安全性*首先要做的是*計算出對用戶的所有威脅*,然後逐一減輕它們;機率非常好,只有少數威脅會被加密緩解。 – 2010-06-03 00:09:13

+0

「鎖定的汽車每天都在高速公路上被砸...」跆拳道?@!這個人只是在這裏要求AES :-)) – wqw 2010-06-03 16:22:10

+0

@wqw:我的觀點是,鎖定一輛車並不能防止它受到多種形式的意外或故意損壞。 *使用加密鎖定數據並不能防止意外或故意損壞*。如果目標是保持用戶的數據*安全*,那麼你必須陳述一個*威脅*,以防止它受到威脅。 *大多數威脅都沒有通過加密來緩解;如果實際的威脅是其中之一,那麼加密會使情況變得更糟*,而不是更好*。 – 2010-06-03 22:54:07

回答

2

你看過System.Security.Cryptography嗎?

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx

我會看着AesCryptoServiceProvider。

+1

+1。我建議編寫一個將.Net加密文件公開給VB6的C#組件。像這樣http://msdn.microsoft.com/en-us/library/aa719105(VS.71).aspx – MarkJ 2010-06-02 20:40:30

+0

我接受基於從MarkJ評論這個答案。構建一個可以被COM封裝並通過VB6使用的.net組件,可確保兩個應用程序使用相同的代碼。感謝大家的所有意見。 – dretzlaff17 2010-06-04 13:30:27

3

您可以使用Transact-SQL的加密函數來處理數據庫中的安全性,而不是在應用程序端加密/解密工作。畢竟,這兩個應用程序都將連接到同一個數據庫。

+0

這聽起來是最簡單的,儘管您需要評估DBA是否能夠解密密碼,並且這是否有風險。有時,您將加密放在應用程序而不是數據庫中,以分離DBA訪問的信息。 – Justin 2010-06-02 20:17:51

+0

您還需要確保數據庫驅動程序加密流量(或使用專用接口)。 – Justin 2010-06-02 20:18:37

+0

這是一個好主意。不幸的是,我使用的數據庫版本不支持T-SQL中的加密功能。 – dretzlaff17 2010-06-03 14:35:29

1

我的第一個想法是使用內置於Microsoft操作系統的內置CryptoAPI。這會給你的VB6和C#開發平臺之間的共同點。

http://en.wikipedia.org/wiki/Cryptographic_API

一些快速&骯髒的樣本代碼在這裏:http://www.freevbcode.com/ShowCode.Asp?ID=804

這是解釋如何做到這一點在C#中的許多站點之一:http://blogs.msdn.com/b/alejacma/archive/2007/11/23/p-invoking-cryptoapi-in-net-c-version.aspx

+1

Eeek! -1但沒有評論...爲什麼討厭? :) – code4life 2010-06-03 03:18:30

+0

感謝您的意見。我正在投票支持你提供信息作爲我的問題的可能解決方案。我不確定爲什麼有人會在沒有任何推理的情況下投票。 – dretzlaff17 2010-06-04 14:24:33

1

你可以嘗試VBCorLib它支持與在.NET中找到的相同的加密類。 VBCorLib中的加密類提供了與.NET類幾乎相同的API,因此代碼與在兩個平臺之間執行加密/解密非常相似。

https://sourceforge.net/projects/vbcorlib/