[완료] C 코드 해석좀 부탁드립니다.
글쓴이: ystory / 작성시간: 일, 2009/11/29 - 10:50오전
안녕하세요. C 코드 하나만 간략한 설명좀 부탁드립니다.
typedef unsigned char u8; typedef unsigned int u32; static const u8 pc1[56] = { 56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3 }; static const u32 bytebit[8] = { 0200, 0100, 040, 020, 010, 04, 02, 01 }; void main() { u32 j, l, m; u8 pc1m[56], pcr[56], key[8] = "12345678"; for (j = 0; j < 56; j++) { l = (u32) pc1[j]; m = l & 7; pc1m[j] = (u8)((key[l >> 3U] & bytebit[m]) == bytebit[m] ? 1 : 0); }
des 키 스케쥴 하는 소스 일부인데요. 어젯밤 제가 짠것과 이 소스를 비교해 보고 충격에 빠졌습니다.
다른건 대강 이해 했는데 이 부분은 진짜 잘 모르겠습니다. ㅠㅠ
이게 어떤 원리로 비트열을 배치 하는건지 알고 싶어요.
저는 문자열로 저장해서 인덱스 바꾸는 허접한 방법으로 했는데 이런 방법이 다있네요.
간략하게라도 조언좀 부탁드릴게요. 그럼 즐거운 휴일 보내세요. :D
-자답이네요.
2차원 배열로 생각하니까 쉽게 풀렸습니다.
m과 l>>3U 가 하는게 key"index"와 비트 자리수 구하는 거였네요. ㅠㅠ
Forums:
댓글 달기