2011-05-02 148 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