CAPICOM TripleDES 和 System.Security.Cryptography TripleDES 之间的差异
我正在尝试不再使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
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.
不完全是您问题的答案,也不理想,但我们在 CAPICOM 上遇到了同样的问题,并通过以下方式让它在 64 位世界中工作:
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:
您可以在 64 位计算机上的 32 位进程中使用 CAPICOM(显然)。如果您从脚本中使用它,则必须使用 32 位版本的
cscript.exe
和wscript.exe
。即:这工作正常,我现在正在生产中进行。
此外,此答案还介绍了如何为 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
andwscript.exe
. I.e: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.