2011-05-02 94 views
0

我有一個C#.net應用程序與我反編譯。提斯應用程序使用的登錄密碼cryption: http://www.obviex.com/samples/Sample.aspx?Source=EncryptionWithSaltCS&Title=Encryption%20With%20Salt&Lang=C%23C#RijndaelEnhanced解密與php mcrypt

C#代碼

rijndaelKey = new Krypto.RijndaelEnhanced(passPhrase, initVector); 
PlainPassword = DiverseVariablen.rijndaelKey.Decrypt(Conversions.ToString(row["ProjectKennwort"]))) 

我有通行證和iv。

我如何解密密碼在PHP? 我嘗試了幾種mcrypt_decrypt()的變體。

Didt somene有個想法嗎?

友好的問候和非常感謝。

回答

1

看起來他們正在使用password-based key derivation function。 mycrypt可讓您直接設置密鑰,並在適當的情況下填充null。您鏈接的C#庫從密鑰派生密碼。谷歌搜索的PBKDF2 PHP揭示了以下內容:

HTT ­號碼://www.itnewb.com/v/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard

所以我會嘗試。另外,我個人建議使用phpseclib, a pure PHP AES implementation,以便攜帶。 PHP安裝在服務器上並不意味着mcrypt是。

+0

謝謝答案:但它不幫助。我試過了,但它力度不夠。我混淆的是,C#類需要16字節IV和256字節的密鑰。但一個256字節的密鑰需要在PHP 32字符四。 – GreenRover 2011-05-04 07:56:43

+1

你還在使用mcrypt不是嗎?就像我說的,我會嘗試使用phpseclib的Crypt_AES。使用起來更容易。 mcrypt也可以使用,但它會以令人困惑的方式進行操作。像mcrypt_enc_get_iv_size(),iirc,總是說32,對於AES。這是因爲mcrypt實現Rijndael,而不是AES和Rijndael支持可變塊大小,其中最大的是256位。如果你使用128位密鑰,它應該仍然可以工作,儘管那個函數說了什麼。或者你可以只使用phpseclib的Crypt_AES,並消除頭痛... – 2011-05-04 14:12:05

+0

我試了兩個。在這裏我的phpseclib測試http://pastebin.com/SKPG7gR2 – GreenRover 2011-05-05 07:09:46