2

ブローフィッシュを使用して、既知のパスワードでphpのメッセージを暗号化したい。次に、このメッセージをPythonで復号化します。

これは、ある言語で暗号化し、他の言語で復号化したい場合でも役立ちます。

私はかなり広範囲に検索しましたが、決定的な解決策を見つけることができなかったので、私は自分の発見を記録することを考えました。

PythonやPHPなどの同じ言語で暗号化/復号化するのは非常に簡単であることに注意してください。

4

1 に答える 1

2

この解決策は非常に単純ですが、理解するのに少し時間がかかりました。

ブローフィッシュパラム

  • パスワードの長さは16である必要があります
  • モードMODE_ECBを使用します。
  • 暗号化された長さのデータは、常にスペースまたはその他の文字で16で割り切れる必要があります。以下の例では、16の長さのデータ文字列を使用しています。

phpコード:

<?php
$passw='secretPassword12';
$ntext='helloWorld123456';
$enc = base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, $passw, $ntext, MCRYPT_MODE_ECB));
echo '<div>'.$enc.'</div';

これにより、3C8f2kaD8Of0INYk3l9qEg==pythonコードが出力されます。

from Crypto.Cipher import Blowfish
from base64 import b64encode, b64decode
passw='secretPassword12'
ntext='helloworld123456'

cipher=Blowfish.new(passw, Blowfish.MODE_ECB)
encStr=b64encode(cipher.encrypt(data))
print encStr

このコードは3C8f2kaD8Of0INYk3l9qEg==も出力します

ここで、phpで暗号化されたPythonで文字列を復号化するとします。最初にb64decodeを実行してから、結果を復号化します。

Remember to pad your data such that the len is divisible by 16. 

暗号化と復号化を楽しんでください!!!

于 2012-08-20T23:05:22.007 に答える