を暗号化するためにphpseclib AESを使用したページは何も前http://phpseclib.sourceforge.net/crypt/examples.htmlはので、ここで[OK]を文字列
<?php
include('Crypt/AES.php');
include('Crypt/Random.php');
$cipher = new Crypt_AES(); // could use CRYPT_AES_MODE_CBC
// keys are null-padded to the closest valid size
// longer than the longest key and it's truncated
//$cipher->setKeyLength(128);
$cipher->setKey('abcdefghijklmnop');
// the IV defaults to all-NULLs if not explicitly defined
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
$size = 10 * 1024;
$plaintext = str_repeat('a', $size);
echo $cipher->decrypt($cipher->encrypt($plaintext));
?>
からのサンプルコードです、なぜライン//$cipher->setKeyLength(128);
はコメントアウトされていますか?
キーを '1234568790'に設定したい場合は、何かすべきことはありますか?これは、上記の例のキーの長さ(abcdefghijklmnop)よりもはるかに短いためです。
最後に、暗号化したいプレーンテキストが短い場合は、「my name is james bond」のようなものがありますが、余計なことはありますか?上記のコードから、それは平文の長さは何も前に、10×1024(なぜですか?)
プレーンテキストは10x1024であってはなりません。例として、10KBのサイズ(したがって10x1024)の文字列を作成しました。 128ビットのキーとは、128/8バイト= 16バイトを意味し、1文字あたり2バイトで8文字になります。 256ビットキー= 32バイト= 16文字(したがってabcdefghijklmnopは16文字です)。私はあなたが見つけたその特定のライブラリに徹底的に慣れているわけではありません - 私は純粋なPHPライブラリよりもopenssl拡張を好みます。あなたのコメントのために – Mjh
@Mjhありがとう。しかし、この例では、128ビットに設定するとabcdefghijklmnopというキーが表示されます... 128ビットのキーでは16文字です – imin
これらの文字は使用する必要はありません。キーはまた、(ハッシュを介して)16進形式に変換することができ、対応する量のバイトを使用することができる。個人的には、私が使用する鍵は常にランダムに作成され、次にハッシュされます。使用されるハッシュ関数は、暗号のブロックサイズに応じて選択されます。暗号化は複雑な獣であり、正しく実装されていないことがよくあります(訓練された暗号者は私が投稿したコメントに間違いを見つけるでしょう)。暗号化をさらに進める前に[このブログ](http://www.cryptofails.com/)をお勧めします。最初からすぐにそれを行うのが最善です。 – Mjh