차이

2016-11-17 4 views
2

키 생성 알고리즘 내가 키 특정 세션을 생성하기위한 다음의 알고리즘 구현 알고리즘에 대해 다음 코드 조각을 가로 질러 온 IKE 세션을 구현하기 위해 노력하고 있지만차이

SKEYID_e = HMAC (SKEYID, SKEYID_a || gxy || CKY-I || CKY-R || 2)

구현은 hmac_update는 (B)을 연결하는 데 사용되는 API 여기에 2

hmac_update(ctx, (unsigned char *) "\2", 1)

자리의 마지막 연결 HMAC를 얻을 수 있습니다 다이제스트를 완료하기 전에 HMAC를 가져오고 CTX는 HMAC 컨텍스트 "\ 2"에 2를 더하고 1은 버퍼의 크기입니다.

내 질문의 차이이며 unsigned char *"\2"2

답변

6

차이는 수치 2 문자열 "\2"char는 전자가 char이고 두 번째는 수치가 0이어서 char 수치 2와 char 함유 문자 배열을 나타내는 문자임을 있다는 즉,

  • (char)2은 단일 문자입니다. 유형은 char입니다. 값은 2입니다.
  • "\2"은 문자 배열입니다. 그것의 유형은 const char*으로 붕괴됩니다. 그 첫 번째 항목은 2이고, 두 번째 항목은 바이트에 대한 포인터가하고 있기 때문에, 당신은 인자로 2 또는 (char)2를 제공 할 수있는 업데이트에 사용하는 두 번째 인수로 0

hmac_update 이후 예상하는 것입니다 그래서 포인터 (정수)로 정수를 변환하려고합니다. "\2"을 사용하면 해당 바이트에 대한 포인터를 제공함으로써이 문제를 해결할 수 있습니다.

-1

"2"는 16 진수 코드 2 문자 설명하는 char/uint8_t 값 (http://ascii-table.com/info.php?u=x0002을 비 인쇄 문자가 확인) 도주 것입니다 ;
숫자 "2"는 인쇄 가능한 문자 '2'와 마찬가지로 16 진 코드 0x050 = 50을 갖습니다.

+1

나는 OP의 질문에 대답하지 않는다고 생각합니다. 그들은 "숫자 값 2와"2 "와"2 "사이의 차이에 대해 질문하고 있습니다. "문자"2 "와 문자"\ 2 "의 차이가 아닙니다." – templatetypedef