問題是爲什麼一個32字符的字符串在C#.NET中工作,但不是在PHP mcrypt中,以及如何使它們兼容? (我有AES做這件事的方法,3DES保持打開狀態。C#和PHP加密/解密密鑰大小的PHP問題
我試圖創建一個使用微軟的加密API在.NET和PHP的mcrypt的加密和解密數據的加密API。
C#應該能夠加密和解密,PhP只需要解密。問題是我希望用戶能夠定義他們自己的密鑰。爲此,我有md5加密他們輸入的密碼。在C#端,但在PHP中我得到
警告:mcrypt_decrypt()[function.mcrypt-decrypt]:密鑰的大小對C:\ xampp \ htdocs \ failcrypt \ crypt.php中的算法來說太大第40行
(一個空的「」字符串應該工作,以及相當大的鍵。
我能找到的所有鏈接都有預設鍵,但我的雙方都必須適用於任意鍵大小。
echo $key."</br>";
echo md5($key)."</br>";
$newKey = md5($key)."</br>";
echo strlen($newKey)."</br>";
$decrypted = mcrypt_decrypt(MCRYPT_3DES, md5($key), base64_decode($msg), MCRYPT_MODE_ECB);
echo $decrypted;
輸出
紅色(關鍵)
bda9643ac6601722a28f238714274da4(散)
看起來像運輸它時發生了關鍵的事情。我會聞到一個編碼問題,但是你寫它是一個MD5散列,在傳輸時不應該有明顯的編碼問題。你如何將密鑰字符串從C#傳遞給PHP? – hakre
@hakre密鑰現在可以硬編碼,只要php和c#必須能夠使用相同的密鑰 –
嗯,你在問題中給出的strlen是錯誤的。我得到了32分,而不是37分。 – hakre