0

ユーザーが使用する前に登録する Web サービスを構築しています。次に、登録キーを渡します。

彼らが私のサービスに電話すると、彼らは私に登録キーを渡します。次に、キーを復号化して、ユーザーとサービスを検証します。

暗号化に AES を使用してこれを試しましたが、キーが大きすぎました。URLで渡すことができるより小さなキーを私に与える暗号化する別の方法はありますか?

データベースのルックアップを避けるために、復号化できるようにしたい。

ありがとう

編集:申し訳ありませんが、AESキーを渡していませんでした。暗号化されたAES値を意味していました。正しくカウントした場合、これは 96 バイトでした。

4

2 に答える 2

2

キーを渡してはいけません。キーを使用して、ユーザーの ID を暗号化します。

$userID = 42;
$crypted = aes_encrypt($key, $userID . "some random salting/padding stuff");
$encoded = base64_encoded($crypted);

$url = "http://example.com?registrationConfirnmationID=$encoded";

次に、登録メールでユーザー $url を送信します。彼らはそれをクリックし、あなたはサーバー上で逆のことをします:

$encodedID = $_GET['registrationConfirmation'];
$crypted = base64_decode($encodedID);
$registrationString = aes_decrypt($key, $crypted);

あなたに与えるだろう

42some random salting/padding stuff

その後、塩をはがして完成です。

于 2013-05-28T16:42:06.450 に答える
1

キーが非常に大きい場合でも、AES からの暗号化されたデータはそれほど大きくありません。URL パラメーターのサイズはかなり大きくなる可能性がありますが、それはすべて、正確に何を暗号化する必要があるかによって異なります。データベース ルックアップは、Web サービスでキーを復号化する際の CPU 負荷よりもおそらく高速です。

多くのオプションがありますが、ハッシュまたは暗号化されたデータは Base64 などにエンコードして、URL 経由で送信できるようにすることができます。

于 2013-05-28T16:38:33.577 に答える