>  기사  >  기술 주변기기  >  하나의 기사로 해시 알고리즘과 애플리케이션 시나리오를 이해하세요.

하나의 기사로 해시 알고리즘과 애플리케이션 시나리오를 이해하세요.

王林
王林앞으로
2023-04-13 11:55:021833검색

1. 해싱 알고리즘이란

해시와 해싱은 모두 해시라는 단어에서 유래되었으며 전자는 음역이고 후자는 자유 번역입니다. 임의 길이의 이진 값을 고정 길이 이진 값으로 매핑할 수 있는 알고리즘입니다. 매핑된 고정 길이 이진 값을 해시 값이라고 합니다. 우수한 해시 알고리즘은 다음 요구 사항을 충족해야 합니다.

는 해시 값에서 원본 데이터를 역으로 추론할 수 없습니다.

는 입력 데이터에 매우 민감하며 다른 비트로 인해 해시 값이 매우 달라집니다. 해시 충돌 가능성은 매우 작아야 합니다.

해시 알고리즘의 계산 프로세스는 충분히 간단하고 효율적이어야 하며, 원본 데이터가 매우 길더라도 해시 값을 빠르게 얻을 수 있습니다.

2. 해시 알고리즘

2.1 보안 암호화

더 일반적인 해시 암호화 알고리즘은 MD5(MD5 메시지 다이제스트 알고리즘, MD5 메시지 다이제스트 알고리즘) 및 SHA(보안 해시 알고리즘, 보안 해시 알고리즘)입니다.

일반 텍스트 비밀번호는 해시 값 암호문에서 유추할 수 없으며 해시 충돌 가능성이 상대적으로 적습니다. 이 두 가지 점은 안전한 암호화 방법으로서 해시 알고리즘의 신뢰성을 보장합니다.

해싱 알고리즘이 해시 충돌을 완전히 피할 수는 없지만 최소화할 수만 있는 이유는 무엇입니까?

비둘기 둥지 원리에 따르면 11마리의 비둘기가 10개의 비둘기장으로 날아간다면 하나의 비둘기장에는 2마리 이상의 비둘기가 있어야 합니다. 그러면 해시값의 길이가 고정되어 해시값이 소진될 수 있다고 판단하지만, 이론적으로는 원본 데이터가 무한하므로 해시 충돌이 발생할 수 있습니다.

이 응용 프로그램 시나리오는 해시 알고리즘의 기능 1과 3을 사용합니다. 그 중 3개는 암호가 순방향으로 해독되기 매우 어렵다는 것을 보장합니다(예를 들어 MD5를 사용하면 해시 값 길이는 128비트이며 2^128 다름 해시 값은 해독하기가 매우 어렵습니다.

보안 분야에 절대적인 보안은 없습니다. MD5는 해독하기 어렵지만 여전히 해독할 수 있는 방법이 있습니다. 예를 들어 레인보우 테이블 매칭을 사용하면 일반적인 비밀번호를 쉽게 해독할 수 있습니다.

그래서 일반적으로 우리는 안전한 암호화를 위해 솔티드 해시 알고리즘을 사용합니다. 솔팅 방법은 엄격하게 기밀로 유지되어야 하므로 크래킹의 난이도와 비용이 크게 증가합니다.

2.2 고유 플래그

두 파일이 동일한지 확인할 때 단순히 파일 이름만으로 판단할 수는 없습니다. 같은 이름의 파일이 존재하는 것이 너무 흔하기 때문입니다.

특정 규칙에 따라 대용량 파일에서 일부 바이너리 데이터를 가져와 해시 알고리즘을 사용하여 파일의 고유 식별자인 해시 값을 얻을 수 있습니다. 이런 방식으로 동일한 파일은 동일한 해시 값, 즉 동일한 고유 식별자를 가져야 합니다. 서로 다른 파일은 해시 값의 서로 다른 고유 식별자를 가질 확률이 높습니다.

해시 충돌이 발생하더라도 두 파일의 모든 바이너리 데이터를 자세히 비교하여 동일한 파일인지 여부를 추가로 확인하세요. 이 이벤트가 발생할 확률은 너무 낮습니다. 그러나 이 솔루션은 효율성과 안정성을 모두 보장합니다.

이 응용 시나리오는 해시 알고리즘의 기능 2와 3을 사용합니다.

2.3 데이터 검증

P2P 다운로드 프로토콜에서는 동일한 영화의 다른 부분을 다른 컴퓨터에서 다운로드한 다음 자체 컴퓨터에서 영화를 조립합니다. 영화의 일부 다운로드 과정에서 오류가 발생하거나 콘텐츠가 변조될 경우 다운로드 오류나 바이러스가 발생할 수 있습니다.

그래서 먼저 모든 부분을 해시하고 시드 파일에 저장합니다. 모든 부분을 다운로드한 후 모든 부분을 해시하여 해시 값을 얻은 다음 이를 시드 파일의 부분과 비교하여 파일이 완전한지 확인합니다.

이 애플리케이션 시나리오는 해시 알고리즘의 기능 2와 4를 사용합니다.

2.4 해시 함수

이 시나리오는 이전에 해시 테이블에 대해 이야기할 때 소개된 적이 있습니다. 이 시나리오에서는 기능 1에 대한 요구 사항이 그다지 높지 않습니다. 기능 2에 대한 요구 사항은 해시 값이 최대한 균등하게 분산되어야 한다는 것입니다. 기능 3도 충돌을 어느 정도 허용할 수 있으며 이는 다음과 같이 해결할 수 있습니다. 오픈 어드레싱 방식과 지퍼 방식을 사용하는 경우에는 기능이 더 까다로워 성능을 추구해야 합니다.

2.5 로드 밸런싱

폴링, 랜덤, 가중 폴링 등 많은 로드 밸런싱 알고리즘이 있지만 목표는 세션 고정 로드 밸런싱 알고리즘, 즉 모든 로드 밸런싱 알고리즘을 구현하는 것입니다. 세션 중 클라이언트 요청은 모두 동일한 서버로 라우팅됩니다.

클라이언트의 IP 또는 세션 ID를 해시하고, 얻은 해시 값을 서버 수로 모듈로화할 수 있습니다. 얻은 최종 값은 세션 고정 목적을 달성할 수 있도록 라우팅해야 하는 서버입니다.

2.6 데이터 샤딩

대량의 데이터를 처리해야 할 때, 단일 서버에서는 그렇게 많은 양의 데이터를 로드하고 계산할 수 없으므로, 병렬 컴퓨팅을 위해 대용량 데이터를 N개의 서버에 균등하게 분배해야 합니다. N개의 서버에 균등하게 나누어 놓으면 어떨까요?

데이터에 대해 해시 계산을 수행하고, 얻은 해시 값을 서버 수 N의 모듈로 사용합니다. 동일한 결과를 갖는 데이터는 동일한 서버에 할당되어 처리를 위해 이 서버로 전달됩니다. N개의 서버가 대용량 데이터를 병렬로 처리하고 최종적으로 결과를 병합합니다.

2.7 분산 스토리지

대용량 데이터를 분산 캐시나 분산 데이터베이스에 저장하는 개념은 위의 데이터 샤딩과 비슷합니다. 그런데 원래 설정된 서버 수가 부족할 경우 어떻게 해야 할까요?

단순히 몇 대의 머신을 추가하는 것만으로는 해결할 수 없습니다. 이렇게 하면 해시 값의 모듈로 연산이 파괴되고 캐시 침투가 발생하여 눈사태 효과가 발생합니다. 마찬가지로 기계 결함이 제거되면 동일한 문제가 발생할 수 있습니다. 이때 이 문제를 해결하려면 일관된 해싱 알고리즘을 사용해야 합니다.

일관된 해시 알고리즘은 단순히 링에 2^32개의 노드로 해시 링을 구성하고 서버 IP와 파일을 해당 노드에 해시하는 것입니다. 모든 파일이 시계 방향으로 만나는 첫 번째 서버는 해당 파일이 저장된 서버입니다. 이러한 방식으로 서버를 추가하거나 삭제할 때 영향을 받는 파일 수를 제어할 수 있으며 글로벌 사태가 발생하지 않습니다.

하나의 기사로 해시 알고리즘과 애플리케이션 시나리오를 이해하세요.

해시 링

그러나 일정 확률로 서버 IP가 해시 링에 매핑되면 해시 링이 왜곡될 수 있습니다. 이로 인해 서버의 파일 배포가 극도로 고르지 않게 되고 성능이 저하됩니다. a 서버를 추가하거나 삭제할 때 눈사태 효과가 발생하기 쉽습니다.

하나의 기사로 해시 알고리즘과 애플리케이션 시나리오를 이해하세요.

해시 링의 왜곡

모든 서버 노드가 해시 링에 고르게 분산되도록 이러한 서버에 여러 개의 가상 노드를 인위적으로 추가할 수 있습니다.

하나의 기사로 해시 알고리즘과 애플리케이션 시나리오를 이해하세요.

가상 노드가 포함된 해시 링

3. 요약

해시 알고리즘의 사용 시나리오는 위보다 훨씬 다양하며 CRC 검사도 있습니다.

위 내용은 하나의 기사로 해시 알고리즘과 애플리케이션 시나리오를 이해하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제