将 int 数组转换为 unsigned char 数组以进行 AES 加密
Convert an int array to an unsigned char array for AES encryption
我得到了一个数组
int key[128] = {1,0,1,0,0,1, .........., 0,1,0}
我想将这个数组转换为
unsigned char key1[16] = {0x__,0x__,...,0x__}
例如如果
from key[0] to key[7] is 10100011, then key1[0] = 0xa3
我需要使用这个新数组进行 AES 加密
这假设 lsb 是 key[0]
,msb 是 key[7]
int key[128] = {1,0,1,0,0,1, .........., 0,1,0}
unsigned char key1[16];
int (* better_key)[8] = (int (*)[8])key;
int i;
int j;
for (i=0;i<sizeof(key1); i++){
key1[i]=0;
for(j=0;j<8;j++){
key1[i]|=better_key[i][j]<<j;
}
}
如果msb为key[0]
,lsb为key[7]
,只需替换
better_key[i][j]
和
better_key[i][7-j]
遍历 key[]
的每个元素,将其位位置值添加(或运算)到 key1[]
的相应元素。
#define N 128
#define B8 8
int key[N] = {1,0,1,0,0,1, .........., 0,1,0}
unsigned char key1[N/B8] = { 0 };
for (unsigned i = 0; i<N; i++) {
key1[i/B8] |= key[i] << (B8 - 1 - (i%B8));
}
我得到了一个数组
int key[128] = {1,0,1,0,0,1, .........., 0,1,0}
我想将这个数组转换为
unsigned char key1[16] = {0x__,0x__,...,0x__}
例如如果
from key[0] to key[7] is 10100011, then key1[0] = 0xa3
我需要使用这个新数组进行 AES 加密
这假设 lsb 是 key[0]
,msb 是 key[7]
int key[128] = {1,0,1,0,0,1, .........., 0,1,0}
unsigned char key1[16];
int (* better_key)[8] = (int (*)[8])key;
int i;
int j;
for (i=0;i<sizeof(key1); i++){
key1[i]=0;
for(j=0;j<8;j++){
key1[i]|=better_key[i][j]<<j;
}
}
如果msb为key[0]
,lsb为key[7]
,只需替换
better_key[i][j]
和
better_key[i][7-j]
遍历 key[]
的每个元素,将其位位置值添加(或运算)到 key1[]
的相应元素。
#define N 128
#define B8 8
int key[N] = {1,0,1,0,0,1, .........., 0,1,0}
unsigned char key1[N/B8] = { 0 };
for (unsigned i = 0; i<N; i++) {
key1[i/B8] |= key[i] << (B8 - 1 - (i%B8));
}