2010-07-20 96 views
3

我試圖擺脫使用CAPICOM,因爲我無法再使用它(64位Windows 7機器)。CAPICOM TripleDES與System.Security.Cryptography之間的差異TripleDES

現有碼使用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服務的連接。 任何幫助或想法,不勝感激。

+0

你已經解決了嗎?我有同樣的問題.... – 2011-06-29 13:32:02

+0

永遠無法解決此問題。客戶決定保留舊的黑匣子dll。 – Posthuma 2011-07-05 14:57:04

+0

@ user821181,請參閱下面的答案。 – Ben 2012-01-19 15:23:22

回答

0

不完全回答你的問題,也不是理想的,但我們擊中CAPICOM同樣的問題,得到它由64位世界的工作:

  • 複製二進制文件的[Windows] \ SysWow64資料
  • 註冊服務(從通道內運行,REGSVR32 capicon.dll
+0

這將工作。但是,我試圖用.NET加密工具來實現,並與舊的CAPICOM dll一起工作。 – Posthuma 2011-10-17 15:53:19

0

您可以在64位機(顯然)上使用CAPICOM從32位進程。如果您使用的是腳本,則必須使用cscript.exewscript.exe的32位版本。 I.e:

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並能正常工作。

1

SetSecret不是關鍵!

從MSDN:

CAPICOM_SECRET_TYPE枚舉

的CAPICOM_SECRET_TYPE枚舉指示要被用於數據加密/解密用來導出密鑰的那種祕密的。

常量 CAPICOM_SECRET_PASSWORD 加密密鑰將從密碼派生。