CAPICOM TripleDES 和 System.Security.Cryptography TripleDES 之间的差异

发布于 2024-09-10 19:06:40 字数 554 浏览 10 评论 0原文

我正在尝试不再使用 CAPICOM,因为我无法再使用它(64 位 Windows 7 机器)。

使用 TripleDES 的现有代码如下:

EncryptedDataClass cryptic = new EncryptedDataClass();
cryptic.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM.CAPICOM_ENCRYPTION_ALGORITHM_3DES;
cryptic.SetSecret(secretKey, CAPICOM_SECRET_TYPE.CAPICOM_SECRET_PASSWORD);
cryptic.Content = stringToEncrypt;
encryptedString = cryptic.Encrypt(CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_ANY);

为加密提供的唯一信息是 SecretKey。秘密密钥大约有十个字节。有没有办法使用 .NET 类来进行相同的加密。 注意:这用于验证与仍使用 CAPICOM 的 Web 服务的连接。 非常感谢任何帮助或想法。

I'm trying to move away from using CAPICOM since I can no longer use it (64-bit Windows 7 machine).

The existing code for using TripleDES is like this:

EncryptedDataClass cryptic = new EncryptedDataClass();
cryptic.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM.CAPICOM_ENCRYPTION_ALGORITHM_3DES;
cryptic.SetSecret(secretKey, CAPICOM_SECRET_TYPE.CAPICOM_SECRET_PASSWORD);
cryptic.Content = stringToEncrypt;
encryptedString = cryptic.Encrypt(CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_ANY);

The only information supplied for the encryption is the secretKey. And the secretKey comes out to be about ten bytes. Is there a way use the .NET class to do the same encryption.
Note: this is used to verify connection to a web service that will still be using CAPICOM.
Any help or ideas are greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

海之角 2024-09-17 19:06:40

SetSecret 不是密钥!!

来自 MSDN:

CAPICOM_SECRET_TYPE 枚举

CAPICOM_SECRET_TYPE 枚举指示用于派生用于数据加密/解密的密钥的秘密类型。

常数
CAPICOM_SECRET_PASSWORD
加密密钥将从密码派生。

SetSecret is not a key!!

from MSDN:

CAPICOM_SECRET_TYPE Enumeration

The CAPICOM_SECRET_TYPE enumeration indicates the kind of secret used to derive a key to be used for encryption/decryption of data.

Constants
CAPICOM_SECRET_PASSWORD
The encryption key is to be derived from a password.

寄居者 2024-09-17 19:06:40

不完全是您问题的答案,也不理想,但我们在 CAPICOM 上遇到了同样的问题,并通过以下方式让它在 64 位世界中工作:

  • 将二进制文件复制到 [windows]\syswow64
  • 注册服务(从该路径中运行,regsvr32 capicon.dll

Not exactly the answer to your question and nor is it ideal, but we hit the same issue with CAPICOM and got it to work in the 64bit world by:

  • Copy the binary to [windows]\syswow64
  • Register the service (run from within that path, regsvr32 capicon.dll)
朮生 2024-09-17 19:06:40

您可以在 64 位计算机上的 32 位进程中使用 CAPICOM(显然)。如果您从脚本中使用它,则必须使用 32 位版本的 cscript.exewscript.exe。即:

c:\windows\sysWOW64\cscript.exe "c:\path\to\script.wsf"

c:\windows\sysWOW64\cscript.exe "c:\path\to\another\vbscript.vbs"

这工作正常,我现在正在生产中进行。

此外,此答案还介绍了如何为 CAPICOM 注册代理,以便可以在 64 位进程(包括 64 位脚本)中使用它。

我实际上已经这样做了,以使用 64 位 SQL Server 中的 CAPICOM,并且工作正常。

You can use CAPICOM from a 32-bit process on a 64-bit machine (obviously). If you are using it from script, you have to use the 32-bit versions of cscript.exe and wscript.exe. I.e:

c:\windows\sysWOW64\cscript.exe "c:\path\to\script.wsf"

c:\windows\sysWOW64\cscript.exe "c:\path\to\another\vbscript.vbs"

This works fine, I am doing it in production right now.

Also, this answer has a walkthrough of how to register a surrogate for CAPICOM so it can be used from 64-bit processes (including 64-bit script).

I have actually done this to use CAPICOM from 64-bit SQL Server and it works fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文