私は単純な承認スキームをいじっています。SSL やその他の HTTP 認証なしで行う最も簡単な方法は、共有キー暗号化だと思います。PHPマニュアルの簡単な例を採用して、次のことを思いつきました。
$text = "boggles the invisible monkey will rule the world";
$key = "This is a very secret key";
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv);
$iv = base64_encode($iv);
$enc = base64_encode($enc);
echo '<a href="temp2.php?iv='.$iv.'&text='.$enc.'">link</a><br />';
このリクエストを受け取るページ (temp2.php) は次のようになります。
$key = "This is a very secret key";
$iv = base64_decode($_GET["iv"]);
$enc = base64_decode($_GET["text"]);
$crypttext = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB, $iv);
echo "$crypttext<br>";
これは非常に近いですが、正しくデコードされません-エコーします
boggles the invisible monkey will rule t—;eôügJë
ハングアップが何であるかわかりません。リクエストで文字が壊れているのではないかと考えて、urlencode/urldecode と htmlentities を試しましたが、違いはありませんでした。
私が見逃しているものは他にありますか?おそらくパディング?
ありがとう