我正在努力摆脱使用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。并且secretKey大约是10个字节。有没有办法使用.NET类进行相同的加密。 注意:这用于验证与仍将使用CAPICOM的Web服务的连接。 非常感谢任何帮助或想法。
答案 0 :(得分:1)
SetSecret不是关键!!
来自MSDN的:
CAPICOM_SECRET_TYPE枚举
CAPICOM_SECRET_TYPE枚举指示用于派生用于加密/解密数据的密钥的秘密类型。
常量 CAPICOM_SECRET_PASSWORD 加密密钥是从密码派生的。
答案 1 :(得分:0)
不完全是您的问题的答案,也不是理想的,但我们遇到了与CAPICOM相同的问题,并让它在64位世界中工作:
答案 2 :(得分:0)
您可以在64位计算机上使用32位进程的CAPICOM(显然)。如果您是从脚本中使用它,则必须使用32位版本的cscript.exe
和wscript.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而且工作正常。