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 是四个字节。但是,很容易将上面的代码变成一个循环,基于sizeof i.

检索整数的工作方式如下:

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

当然,如果您要使用 AES 对其进行加密,您需要考虑一个合理的填充算法。目前,您看起来正朝着零填充前进,这远非最佳。

于 2012-12-07T08:48:15.843 回答