0

この方法で使用できる安全な暗号化アルゴリズムはありますか?

<?php

   $message="Hi there!";

   $key1="ablablabla";

   $key2="fooboomoohoo";

   $tmp=encrypt($message,$key1);

   $tmp=encrypt($tmp,$key2);

   $tmp=decrypt($tmp,$key1);

   $result=decrypt($tmp,$key2);

   echo "\"".$message."\" is the same as \"".$result."\"";

?>

次のように動作するはずです。

  1. ユーザーは暗号化されたメッセージをサーバーに送信したいので、秘密鍵で暗号化します

  2. サーバーは暗号化されたメッセージを取得するため、独自の秘密鍵で再度暗号化して送り返します

  3. ユーザーは自分の鍵でメッセージを復号化し、送り返します

  4. 最後に、サーバーはメッセージをデコードします

4

2 に答える 2

0

交換可能なキーを使用した暗号化スキームがあるかどうかを尋ねているようです。たとえば、このstackoverflow questionを参照してください。

確かにそのような可換システムはあります。簡単な例としては、Caesar Cypherがあります(つまり、アルファベットの文字をn桁分シフトします。ここで、nはキーです)。安全なスキームに関しては (ここでは安全とはかなり主観的なものです)、キーの可換プロパティはより洗練されたレベルで存在します。このような例は、RSA が一般的な n に対して可換である理由を説明している hereを参照できます。(注: 一般的な n は通常ではありません。)

于 2012-07-23T15:34:54.413 に答える
0

RC4 のようなストリーム暗号はどうですか?

暗号化と復号化には、PRNG の出力との XOR が含まれます。(実際には、復号化は暗号化と同じです。)

$tmp=encrypt($message,$key1); // tmp = P ^ A
$tmp=encrypt($tmp,$key2);     // tmp = p ^ A ^ B
$tmp=decrypt($tmp,$key1);     // tmp = p ^ A ^ B ^ A = p ^ B
$result=decrypt($tmp,$key2);  // result = p ^ B ^ B = p
于 2012-07-24T17:01:51.240 に答える