2016-08-18 52 views
4

我正在嘗試將一些項目從.net framework 4.5遷移到.net core。 嘗試遷移舊的crypting/decrypting方法時出現問題。 該方法是一個TripleDES與密鑰是一個MD5哈希。 MD5散列總是返回16個字節。 這適用於.net framework 4.5,但.net coreSystem.Security.Cryptography.AlgorithmsTripleDES只接受24字節的KeySize。在4.5中它接受16個字節或24個字節。 有沒有可以嘗試的解決方法?TripleDES 16字節無法正常工作

後來編輯: TripleDes類初始化時調用新的TripleDesImplementation,它是this。這裏指出,CNG不支持128位密鑰。

+0

我認爲你的問題是關於.net-core而不是asp.net-core。 –

+0

TripleDes類本身的代碼似乎表明[兩種密鑰大小都受支持](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Security.Cryptography.Algorithms/src/System/安全/加密/ TripleDES.cs#L105)。很明顯'TripleDes'是一個抽象類,所以你可以添加一些示例代碼,以顯示你是如何創建它以及如何/何時指示錯誤。 –

+0

初始化時的TripleDes類調用新的TripleDesImplementation,它是[this](https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Security.Cryptography.Algorithms/src/Internal/Cryptography/TripleDesImplementation.cs #L20)。這裏指出,CNG不支持128位密鑰。 – Ndy

回答

7

不幸的是,Framework 4.5沒有使用TripleDes實現的開源版本。

但是,假設它遵循Triple DES的正常約定,那麼當它提供了兩個密鑰時,它將第一個密鑰重新用作第三個密鑰,那麼您應該能夠使用現有的16字節密鑰並重復前8個字節以形成一個24字節的密鑰,它應該產生與以前獲得的結果相同的結果。

+0

是的,沒有工作,不知道它重用了前8個字節。感謝你的回答。 – Ndy

+0

輝煌!,從2小時掙扎尋找解決方案。完美的工作。 – Madhu

+0

非常感謝! –