문제

SHA-1에 대해 배우려고 노력하고 있습니다. 사양 (RFC 31741)에 포함 된 C 구현을보고 있었고이 부분은 나를 혼란스럽게합니다.

context->Intermediate_Hash[0]   = 0x67452301;
context->Intermediate_Hash[1]   = 0xEFCDAB89;
context->Intermediate_Hash[2]   = 0x98BADCFE;
context->Intermediate_Hash[3]   = 0x10325476;
context->Intermediate_Hash[4]   = 0xC3D2E1F0;

하드 코딩 된 16 진수 값의 중요성은 무엇입니까? 알고리즘을 작동시키는 특별한 소스입니까, 아니면 수학 상수를 나타내는가?

여기에서 전체 코드를 볼 수 있습니다. http://www.faqs.org/rfcs/rfc3174.html

도움이 되었습니까?

해결책

그것들입니다 "내 소매 번호는 아무것도 없다".

선택된 값에는 특별한 속성이 없습니다. 이 숫자는 무작위로 선택된 값과 동일한 속성을 가지지 만 알고리즘 디자이너가 선택할 수는 없습니다. 상수를 선택하는 알고리즘 디자이너를 사용하면 어떤 종류의 백도어를 포함시킬 수 있으므로, 가능한 한 자유도를 줄이는 방식으로 선택되어 있습니다.

일반적인 선택에는 PI의 첫 번째 자리 또는 작은 소수의 SHA-1 제곱근의 경우 다음이 포함됩니다.

사용 된 상수 값은 내 소매 번호로 아무것도 선택되지 않습니다. 4 개의 원형 상수 k는 2, 3, 5 및 10의 제곱근의 2^30 배입니다. 알고리즘, 다섯 번째 (H4의 경우)는 비슷합니다.

에서 위키 백과 : SHA-1

다른 팁

지나치게 장황한 대답을 구하기 위해 알고리즘에 특정한 상수 만 있습니다. 유사한 사용법의 예로 Carmack Square 루트. 그것은 초기 순진한 추측을 제공함으로써 전통적인 제곱 루팅 방법의 속도를 높이는 방법으로 특별한 가치를 사용합니다.

그것들은 코드에서 암시하는 것처럼 중간 해시 요소로 제공하는 데 도움이되는 숫자 일뿐입니다. 그들은 반드시 아무것도 가지고 있지는 않습니다 의미 수학 상수를 암시 할 수 있지만 알고리즘에는 중요합니다.

그것은 당신의 질문에 답하지 않지만 SHA-1에 대한 실제 참조 (RFC에 설명 된 바와 같이)는 다음과 같습니다. FIPS 180. 더 이상 설명은 없지만 적어도 그것은 원래 출처입니다 :-(

또한 SHA-1은 오늘이라는 것을 기억하십시오 심각하게 멸종 위기에 처해 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top