私たちはすべて、固定長の128ビットまたは192ビットまたは256ビットであることに同意します。コンテキストが50文字(バイト)%16 = 2バイトの場合したがって、コンテキストを3回暗号化しますが、残りの2バイトはStateブロックにどのように格納されますか。私はそれらを埋めるべきです、標準はそのような条件を処理する方法を指定していません。AESの制限とMixColumn
MixColumnsステージはAESで最も複雑な側面ですが、私は数学的表現を理解できませんでした。私は行列の乗算について理解していますが、私は数学的な結果に驚いています。値を2倍し、リトルエンディアン1の位置に左シフトし、ビッグエンディアンにシフトします。最上位ビットが1(0x80)に設定されていた場合は、シフトした結果を0x1BとXORする必要があります。私は3を乗算することによって価値2の位置をシフトさせることを意味すると考えました。
私はC実装を提供するチュートリアルでさえ、Wikipediaのさまざまなソースをチェックしました。しかし私は自分の実装を完了することにもっと興味があります!入力をありがとうございます。あなたの質問に応えて
2ビットシフトするには、4で乗算または除算する必要があります。 –
AESはブロック暗号だけです。実際のデータを暗号化する場合は、CBC(暗号ブロック連鎖)やCTR(カウンタモード)のような適切な_mode_を選択する必要があります。 CBCはブロックモードなので、適切なパディング方法を考え出す必要があります(それはあなた次第です)。 CTRはストリームモードなので、任意のバイト数を暗号化できます。 –