我已經創建了一個C#程序集,可以進行3DES加密/加密並對其進行測試。我現在需要解密遠程計算機上的數據以進行安裝。當我的本機進程運行時,.NET不能保證存在,所以我需要使用Win32 C++方法對它進行解密。這是爲了商業應用,所以第三方庫需要靈活地獲得許可。我寧願一個簡單的例子讓我開始。到目前爲止,我發現的大多數例子都需要導入會話密鑰。我沒有使用這些。我使用.NET 2.0對machineA進行加密,然後傳遞給machineB,在那裏我將檢索密鑰並使用原生Win32 API進行解密。任何人都可以用一些例子指出我的方向嗎?C#3DES加密到C解密
我知道我需要從CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFY_CONTEXT)
開始。 但是,下一步似乎是導入密鑰,看起來它需要(http://support.microsoft.com/kb/228786)。這是正確的,還是我讓這太難了?我對加密有一個基本的瞭解。提前致謝!
當你說「到MachineB,我將檢索密鑰和解密...」你已經有明文密鑰,並且正在尋找將它導入到密碼上下文來執行你的解密? (我假設你已經熟悉分組密碼加密模式(CBC,ECB等)。 – WhozCraig
爲什麼不簡單地找到一個LGPL C++ 3DES並將其包裝爲C#,使用原始C++作爲遠程機器? – Martheen
@Martheen因爲C#*有一個完整的[加密安全命名空間](http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx)。爲什麼當你帶入第三個輪子不需要,3DES是3DES,只要你符合正確的密鑰設置,塊模式和填充模式,System.Security.Cryptography將通過WinCrypt完成OP和C++的任務,他只需要獲取他的密鑰設置正確(這通常是在Windows上處理Crypto最難的部分) – WhozCraig