【问题标题】:C# RijndaelEnhanced decrypt with php mcryptC# RijndaelEnhanced 使用 php mcrypt 解密
【发布时间】:2011-08-16 23:06:20
【问题描述】:

我有一个反编译的 C# .net 应用程序。 Tis 应用程序用于登录密码加密: http://www.obviex.com/samples/Sample.aspx?Source=EncryptionWithSaltCS&Title=Encryption%20With%20Salt&Lang=C%23

C#代码

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

我已经通过和iv。

如何解密 php 中的密码? 我已经尝试了 mcrypt_decrypt() 的几种变体。

有人有想法吗?

友好的问候和非常感谢。

【问题讨论】:

    标签: c# php rijndael


    【解决方案1】:

    看起来他们正在使用password-based key derivation function。 mycrypt 让您直接设置密钥并在适当时填充它。您链接到的 C# 库从密钥派生密码。对 PBKDF2 PHP 的 Google 搜索显示以下内容:

    http://www.itnewb.com/v/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard

    所以我会尝试。另外,我个人建议使用phpseclib, a pure PHP AES implementation,以实现可移植性。 PHP 安装在服务器上并不意味着 mcrypt 是。

    【讨论】:

    • 感谢回答:但它没有帮助。我试过了,但它不起作用。让我感到困惑的是,C# 类需要一个 16 个字符的 IV 和一个 256 字节的密钥。但是 php 32 chars iv 中需要一个 256 字节的密钥。
    • 你还在使用 mcrypt 不是吗?就像我说的,我会尝试使用 phpseclib 的 Crypt_AES。它更容易使用。 mcrypt 也足够有用,但它以令人困惑的方式做事。就像 mcrypt_enc_get_iv_size() 一样,iirc 对于 AES 总是说 32。这是因为 mcrypt 实现了 Rijndael 而不是 AES,而且 Rijndael 支持可变块大小,其中最大的是 256 位。如果您使用 128 位密钥,它应该仍然可以工作,尽管该功能说明了什么。或者你可以只使用 phpseclib 的 Crypt_AES 并消除头痛......
    猜你喜欢
    • 2015-11-10
    • 2017-01-03
    • 2023-03-03
    • 2019-04-13
    • 2011-12-26
    • 2012-07-27
    • 2013-12-28
    • 2013-10-21
    • 2013-01-20
    相关资源
    最近更新 更多