AES暗号化(宿題)を実装しましたが、メッセージのパディングの問題に遭遇しました。
私のメッセージがそのようなバイトの配列である場合:
public byte[] encrypt(byte[] message) {
int size = (int) Math.ceil(message.length / 16.0);
byte[] result = new byte[size * 16];
for (int i = 0; i < size; i++) {
if ((i+1) * 16 > message.length){
//padding here????
} else {
byte[] block = Arrays.copyOfRange(message, i * 16, (i + 1) * 16);
byte[] encryptedBlock = encryptBlock(block);
System.arraycopy(encryptedBlock, 0, result, i*16, 16);
}
}
return result;
}
どうすればそのようなメッセージを埋めることができますか?
各バイトがゼロになる可能性があるため、ゼロパディングを使用できません。また、末尾がゼロのメッセージに影響を与える可能性があります。
ここでもこれがどのように行われているのかについての言及は見つかりません(AES暗号化について説明している論文)