2012-12-06 1 views
0

저는 AES를 사용하여 패킷으로 보낼 일부 데이터를 암호화하고 있습니다. 8 비트 요소의 배열에 정수를 저장해야합니다.요소가 값의 1 바이트를 나타내는 배열에 정수를 저장하십시오.

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

내가이 배열에 정수를 저장할 수하고 쉽게 수신 클라이언트에서 데이터를 검색해야이 명확하게하기 위해, 내 배열로 선언됩니다. 이 작업을 수행하는 쉬운 방법이 있습니까?

+0

당신은 언어 태그 ... 아마 C 또는 C++ –

+0

을가 nesC________ 것 누락 – user1754045

답변

1

이것은 일반적으로 비트 이동을 통해 달성 : 당신이 항상하는 int가 4 바이트임을 보장 할 수 없습니다

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

참고. 그러나 위의 코드를 sizeof i을 기반으로 한 루프로 바꾸기는 쉽습니다.

다음과 같이 정수가 작동 가져 : 물론

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

, 당신은 AES와 함께이를 암호화하려고합니다, 당신은 현명한 padding algorithm 관련하여 고려해야 할 사항이 있습니다. 현재는 최적이 아닌 제로 패딩을 향한 것처럼 보입니다.

관련 문제