it-swarm-korea.com

MD5, SHA와 RSA의 차이점은 무엇입니까?

MD5 도구는 16 진수 값을 출력합니다. 같은 방식으로 SHA와 RSA가 함께 16 진수 (또는 다른) 출력을 생성합니까?

MD5, SHA 및 RSA 알고리즘의 차이점은 무엇입니까?

43
Kars

출력 유형이 아닙니다. 16 진은 데이터가 형식화되는 방식입니다. 모두 16 진 데이터를 처리하고 있으므로 16 진은 큰 의미가 있습니다.

중요한 부분은 그들이하는 일과 어떻게 하는가입니다.

  • MD5와 SHA는 해시 함수입니다 (SHA는 실제로 해시 함수의 계열입니다)-데이터를 가져 와서 압축하고 다른 고유 한 출력을 만들기 매우 어려운 적절한 고유 출력을 생성합니다. 데이터를 암호화하지 않습니다. MD5 또는 SHA 출력을 가져 와서 "해시 해제 할 수 없음"을 사용하여 시작 지점으로 돌아갈 수 없습니다. 또한 충돌을 쉽게 생성 할 수있는 방법이 발견되어 더 이상 사용하거나 신뢰해서는 안되는 MD5가 손상되었습니다.

  • RSA는 비대칭 암호화 알고리즘입니다. 두 개의 키 (개인 및 공개)가 있으며 하나의 키 (암호화 또는 암호 해독)로 기능을 수행하고 다른 키와 반대로 사용할 수 있습니다. 사용하는 키는 디지털 서명을 시도하는지 또는 암호화를 시도하는지에 따라 다릅니다.

57
bethlakshmi

MD5는 암호 해시 함수입니다. "SHA"는 해시 함수 계열의 이름입니다. 먼저 "SHA-0"으로 이름이 변경된 단기 "SHA", "SHA-1"이 정의되었습니다 (최고의 판매자). 나중에 가족의 새 구성원이 추가되어 집합 적으로 "SHA-2"로 지정되고 SHA-224, SHA-256, SHA-384 및 SHA-512로 구성됩니다. 최근에, 새로운 SHA 세대는 "SHA-3"뿐만 아니라 "Keccak"라고도 설계되었습니다 (이것은 공개 경쟁이었으며, Keccak은 최종 후보 중 하나의 코드 명입니다) .

암호화 해시 함수는 비밀 키를 사용하지 않는 완전히 정의 된 결정적 함수입니다. 임의의 길이 (비트 스트림, any 비트)의 메시지를 입력으로 받아서 고정 크기 출력을 생성합니다. 출력 크기는 기능에 따라 다릅니다. MD5의 경우 128 비트, SHA-1의 경우 160 비트, SHA-256의 경우 256 비트입니다. 모든 사람이 주어진 입력에서 주어진 해시 함수를 계산할 수 있으며 모두 동일한 결과를 얻습니다. 해시 함수는 digests라고도합니다. 입력에 대한 일종의 "체크섬"또는 "요약"을 생성하기 때문입니다. 강력한 해시 함수는 아무도 "반전"하는 방법을 모르거나 동일한 출력을 생성하는 두 개의 다른 입력을 찾지 못하도록해야합니다. 후자는 collision이라고하며 충돌이 존재하는 수학적 필요성입니다 (함수는 고유 한 출력을 생성 할 수있는 것보다 훨씬 더 많은 고유 한 입력을 받아 들일 수 있기 때문에). one 충돌.

MD5는 충돌과 관련하여 매우 파손 된 것으로 판명되었으며 (PC에서 몇 초 동안 작업하면 충돌이 발생할 수 있음) SHA-0도 이와 관련하여 중단됩니다. SHA-1은 약간 벗겨집니다. 나머지 SHA 제품군은 지금까지 강력 해 보입니다. 해시 함수가 충돌 저항을 달성하는 방법은 비밀 함수 값없이 전체 함수가 완전히 알려져 있기 때문에 약간 기적입니다. 최고의 암호 전문가가 프로세스를 풀기에는 너무 많은 데이터를 혼합합니다.

RSA는 비대칭 암호화 알고리즘과 디지털 서명 알고리즘 의 두 가지 알고리즘입니다. 두 알고리즘은 모두 같은 종류의 수학을 기반으로하지만 상당히 구별됩니다 (많은 사람들이 서명을 "개인 키를 사용한 암호화"라고 설명합니다. 이는 결함과 유사하고 혼동을 일으키기 때문에 그렇게하지 마십시오). 두 알고리즘 모두 keys, 즉 비밀로 유지해야하는 데이터 조각을 사용합니다. RSA 서명의 경우 서명 된 것은 직접 주어진 메시지 (비트 시퀀스)가 아니라 메시지의 hash입니다. 메시지는 먼저 SHA-와 같은 암호화 해시 함수로 처리됩니다. 그런 다음 해시 값이 사용됩니다. RSA의 수학은 보통 수백 비트 정도의 적당한 크기의 값만 처리 할 수 ​​있기 때문에 그렇게합니다. 암호화 해시 함수는 해시에 서명하는 것이 원본 데이터에 서명하는 것만 큼 좋습니다.

이런 식으로 RSA와 암호화 해시 함수는 종종 함께 사용됩니다. 그러나 그들은 전혀 같은 것이 아닙니다.

16 진수 는 비트 시퀀스를 문자 시퀀스로 표현하는 방법입니다. 16 진수는 'A'의 숫자와 문자를 사용합니다. 'F'; 각 문자는 정확히 4 비트를 인코딩합니다 ( '0'은 '0000', '7'은 '0111', 'D'는 '1101'...)을 인코딩합니다. Any 비트 시퀀스 (특히 해시 함수의 출력)는 16 진수로 변환 될 수 있습니다. 16 진법은 사람의 눈과 뇌가 문자를 읽는 데 능숙하고 비트를 읽는 데 능숙하지 않기 때문에 인기가 있습니다. 파일에서 암호화 해시 함수를 계산하는 명령 행 도구는 전통적으로 그 이유로 16 진 문자를 출력합니다. 그러나 해시 함수와 16 진법을 본질적으로 연관시키는 것은 없습니다. 컴퓨터에 맞는 방식은 모두 일련의 비트이므로 16 진법을 따르는 것이 좋습니다. 그리고 해시 함수 출력은 일련의 비트 일 뿐이며 다양한 방식으로 인코딩 될 수 있습니다. 16 진수는 "전통적인"방식 일뿐입니다 (특히 데이터베이스를 다룰 때 Base64 도 종종 발생하지만).

35
Thomas Pornin