asp.net - 如何实现在 ASP.NET 2.0、Coldfusion 5 和 Classic ASP 之间互操作的强大、可逆加密?

标签 asp.net encryption asp-classic coldfusion

我的组织已决定对数据库中的某些数据进行加密,并且我接受了实现加密的任务。我需要能够加密数据,将加密版本存储在数据库的 VARCHAR 字段中,然后检索它并将其解密回其通常状态。

从表面上看,这似乎是一项简单的任务。有多种方法可以实现加密。我之前使用过的一种基于 this StackOverflow question 中找到的 AES 加密代码。 .

在这种情况下,更困难的是我需要编写代码来加密/解密访问我们数据库的各种应用程序中的数据,其中一些应用程序是使用不同的技术开发的。我们有用 Coldfusion 5、Classic ASP 和 ASP.NET 2.0 编写的应用程序。我需要能够使用 Coldfusion 代码加密数据并将其存储在数据库中,然后在 ASP.NET 中读取数据并将其解密回其原始形式。或者在 Classic ASP 中加密并在 Coldfusion 中解密。或者这些平台的任何其他组合。

事实证明,这比我预期的要困难。即使给出相同的数据和相同的共享 secret ,声称使用相同算法的不同类/对象/函数/库似乎也会生成不同的结果。过去,我们使用 CAPICOM 提供 Coldfusion 和 Classic ASP 之间的加密互操作性。但我在尝试让它在 ASP.NET 中运行时遇到了麻烦。我读过this article about how to get CAPICOM to work in .NET ,但这些建议对我不起作用。我什至无法生成互操作类或导入对 COM 对象的引用而不出现错误。此外,我们的一些生产服务器的操作系统似乎与 CAPICOM 不兼容,因此无论如何这可能是一个死胡同。

有没有人对我如何实现加密有任何建议,以便 3 个平台中的任何一个都可以解密其他平台加密的内容,同时仍然使用相当强大的算法?

编辑于2011年12月29日:

正如下面的评论所述,我目前希望找到一个 ASP.NET 解决方案,该解决方案与我们现有的一些使用 CAPICOM 的 Coldfusion/ASP Classic 代码兼容。原因是我们的团队领导不希望我出于当前的目的在代码中引入新的加密方法,除非我也出于不同的目的使用加密来修改旧的应用程序以使用相同的方法。他想为这两个目的使用相同的加密方法。由于修改我们的旧应用程序以使用新的加密方法不仅意味着更改代码,而且还要跟踪旧应用程序加密的所有数据,解密它,并使用新方法重新加密它,所以我很犹豫是否要走除非我必须走那条路。希望我能找到一种方法让 ASP.NET 读取现有的加密数据。

来 self 们其他 Coldfusion 和 ASP Classic 应用程序的加密数据是使用 CAPICOM COM 对象进行编码的。据我所知,设置普遍都是 AES 加密、最大 key 大小(我相信 AES 中是 256 位)。

根据 @Leigh 的要求,以下是我们现有 CF 应用如何使用 CAPICOM 的简化示例:

<cfscript>
    encryptObject = CreateObject("com","CAPICOM.EncryptedData");
    encryptObject.Algorithm.Name = 4; // 4 is AES
    encryptObject.Algorithm.KeyLength = 0; // 0 is MAX, I believe 256-bit in the case of AES
    encryptObject.SetSecret(sharedSecret);
    encryptObject.Content = stringToEncrypt;

    encryptedData = localScope.encryptObject.Encrypt();
</cfscript>

最佳答案

由于您在所有系统之间拥有通用数据库平台,因此我会将您的加密/解密留在那里。这是一篇有关 SQL 2005 中特定于列的加密的文章:

http://msdn.microsoft.com/en-us/library/ms179331(v=sql.90).aspx

关于asp.net - 如何实现在 ASP.NET 2.0、Coldfusion 5 和 Classic ASP 之间互操作的强大、可逆加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661929/

相关文章:

javascript - Web加密API : DOMException: The provided data is too small

php - 更新MySQL数据库中的加密密码

java - BadPaddingException 解密 Android 中的加密数据

asp-classic - 超出响应缓冲区限制

javascript - 使用动态字段名称进行表单验证

c# - 无法在处理程序的子应用程序中加载文件或程序集错误

c# - OnCheckedChanged 事件未触发

c# - ASP.NET Core MVC 中的 Crystal Reports 错误。无法加载文件

c# - 发布网站项目,以便它创建 .dll 而不是 .aspx.cs 文件

javascript - 尝试使用链接延迟,但我尝试的任何代码都不起作用