2013-01-20 4 views
0

왜 내가이 testkode 조각에 문제가 있는지 말할 수있는 사람은 누구나 호출 될 때 GWAN 충돌이 발생합니다.GWAN 암호화

gwan API 도움말 : void aes_init (aes_t * ctx, u32 mode, u8 * key, u32 keylen);

내 테스트 코드 :

aes_t *testaes = 0; 
u32 ed = 0; 
u32 keylen = 128; 
u8 *testkey = 0; 
testkey = (u8*)strdup("B00DDF9D93E199EFEAE967805E0A5228"); 
aes_init(testaes, ed, testkey , keylen); 

난 정말이 이미 포함을 이해하지 못하는 이유만으로 다른 암호화 라이브러리를 구현하기 싫어.

답변

4

aes_t testaes는 null에 대한 포인터입니다.

올바른 호출해야합니다 :

aes_t ctx; 
u32 mode = 0; // decrypt 
u32 keylen = 128; 
u8 *testkey = (u8 *)strdup("B00DDF9D93E199EFEAE967805E0A5228"); 
aes_init(&ctx, mode, testkey, keylen); 
+0

고마워요. aes_t * cts는 포인터로 선언해야하고 "= 0"은 초기화되지 않은 문자 만 사용합니다. 그리고 분명히 나는 ​​C 포인터를 완전히 이해하지 못한다. 학습을 멈추었을 때 나는 죽기를 희망합니다 ..... –

+1

+1 Paulo. 우리는 그 동안 ** strdup() **를 제거했습니다. ** strdup() **는 완전히 쓸모가 없습니다 (유일한 장점은 메모리와 CPU 시간 낭비입니다). 또한 ** 키 **는 * 무작위 * (hw_rand()를 사용하여 키 생성) 및 256 비트 길이 (128 비트 키이 닝이 정의되는 동안)가 아닙니다. 잘못 사용하면 암호가 잘못 될 수 있다는 것을 잊지 마십시오. – Gil

+0

Paulo에게 감사의 말씀을 전하고 관측을 위해 Gil에게 감사드립니다. 128 키 링에 대한 256 키는 할 일 목록에 없었고, 다른 키는 무작위로 생성되고 고유했으며 일반적으로 G-WAN 자체의 xbuf로 모든 문자열을 처리합니다. 이것은 스레드가 아니지만 "G-WAN 팀의 승인 된"C 표준 함수 목록은 초보자가 내 코드를 깨끗하게 유지하는 데 도움이 될 것입니다. 내 인생을 힘들게 만들 것이라고 생각하지만 괜찮습니다. G-WAN 환경에 미치는 영향을 최소화합니다. 우리는 잘못된 선택의 부족에 빠지지 않습니다. 최소한의 창의성 부족으로 살인은 가치있는 진보입니다. –