0

AES を使用して、パケットで送信するデータを暗号化しています。整数を 8 ビット要素の配列に格納する必要があります。これを明確にするために、私の配列は次のように宣言されています。

uint8_t in[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  0x00,0x00,0x00,0x00};

この配列に整数を格納し、受信クライアントでデータを簡単に取得できるようにする必要があります。これを達成する簡単な方法はありますか?

4

1 に答える 1

1

これは通常、ビットシフトによって実現されます。

int i = 42;
in[0] = i & 0xff;
in[1] = (i >> 8)  & 0xff;
in[2] = (i >> 16) & 0xff;
in[3] = (i >> 24) & 0xff;

int が 4 バイトであることを常に保証できるわけではないことに注意してください。ただし、 に基づいて、上記のコードをループに変えるのは簡単sizeof iです。

整数の取得は次のように機能します。

int i = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24);

もちろん、これを AES で暗号化しようとしている場合は、適切なパディング アルゴリズムについて考える必要があります。現在、ゼロパディングに向かっているように見えますが、これは最適とはほど遠いものです。

于 2012-12-07T08:48:15.843 に答える