2010-06-02 158 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/