해시 테이블 해시 스토리

이력 :

  해시 테이블은 그래서 일부 이해를 가지고있는 과거의 정보를 확인하지만, 개념은 매우 명확하지 않다 해시 테이블, 아주, 아주 오래 전에, 반복적으로이 개념을 들었 개념 내에서 매우 중요한 데이터 구조입니다. 오늘 화면 내가 비슷한 MD5 해시 암호화 알고리즘에 추가하기 전에 간단한 학습의 특성을 이해하고, 해시 테이블 측면을 설명보고, 다음이 해시 테이블 데이터 구조의 자신의 이해의 약간이 있었다.

몇 가지 개념을 학습하기 전에 프로세스 해시 테이블의 일부 :

  컨테이너 : 해시 이러한 데이터 중 일부는 임의의 데이터이며, 데이터 저장 용기, 예를 들어, 분산 된 정수의 더미 (1,333,566,7342,6565,3342,25,34242,436,657,879,6589,6,8,654,69,9045. ..), 후 이런 일 이상 복용 컨테이너에 작업 (예를 들어 매우 중요한 개념에이 모듈,하지만 난되었습니다) 해시 테이블에 의아해했다 그래서 이것 때문에도있다.

  바구니 버킷 : 해시 테이블의 매우 중요한 개념은, 해시 테이블은 바구니로 구성되어, 동일한 데이터를 저장할 수 없습니다 바구니,이 해시 테이블 기능입니다.

  위에서 언급 한 내부 해시 테이블 모듈을 통해 얻은 데이터뿐만 후 이후, 상기 데이터는 동일한 방법이 있다면 인계 용이 개의 동일한 데이터, 예를 들어 100,000,001퍼센트 10,001퍼센트 생산 여기 10 == 10 (10 BUCKET_SIZE 인을 ), 동일한 데이터를 생성하는 통 체인 내에 저장되어있는 해시 테이블에 접근하는, 동일한 데이터가 목록에 추가된다.

하루에 암호 해시 알고리즘의 암호가 생성 학습 후 몇 가지 노하우 (공통점이 위에서 언급 한 바와 같이이 즉 해시 알고리즘이 오늘의 주요 이해입니다 ) :

  MD5 암호화 : 문자 시퀀스는 128 비트 시퀀스 후에 MD5에 의해 생성 된 상이한 길이의 01, 즉 32 바이트이다. 아주 중요한 것은 암호화 프로세스, 그는 해시 알고리즘, 모두가 128 비트 길이가 다른 다음 문자 순서, 심지어 문자 'A', 해시 알고리즘이되었다 후 128 비트 및을 사용한다는 것입니다있다 해시 알고리즘 후 문자열 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa은"매우 흥미 (128 비트 (32 바이트) 훨씬 더 큰 것보다 문자열 명백한) 128 비트가되었다.

이러한 이해는 해시 테이블과 접촉 온 후 그런 말을했다 :

  ① 해시 테이블이 어떻게 관련되어있는 경우 데이터는 128 비트를 암호화 된 128 비트 MD5를 생성하는 상술? 사실, (2) 128 == BUCKET_SIZE . 그것은 조금 놀라운, BUCKET_SIZE 너무 큰 수, 거기에이 개념은, 우리가 왜 MD5 128 비트를 알고 싶은 BUCKET_SIZE의 이해이며,이 보안상의 이유로 자신을위한 것입니다. MD5 마지막 BUCKET_SIZE의 작은 생성한다면 (예를 들어 8 비트, 2 . 8 = 256), 다음 (257 개) 다른 문자열 MD5를 이용하여 암호화되어있는 경우, 다음 두 개의 동일한 암호화 결과를 생성하기 위해 결합 된, 그것은 다음과 같아야되지 너무 안전하지 않기 때문에, MD5라는 (물론, 상대적으로 안전이 될 128 비트 MD5의 길이에 의존하지, 수학 알고리즘의 자신의 배경 지식이 더 중요하다). 여기서 두개 존재하는 경우, 극단적 인 결과를 고려 128 +1 다른 문자열 다음 MD5 해시 후에는 동일한 문자열의 적어도 두개를 생성 할 때.

  ② BUCKET_SIZE MD5 나 해시 테이블에 대한 새로운 이해로 : 해시 테이블의 가장 핵심 부분은 실제로 해시 알고리즘 (해시 함수 C ++에서 호출), 언급 위는 너무이기 때문에 나머지는 실제로 해시 알고리즘 (해시 알고리즘 받아 너무 단순 자기가 해시 테이블 경우에 따라서) 나에게 큰 고통을 유발. C ++에서, 우리는 해시 테이블을 나타내는 매우 일반적인 컨테이너 벡터 (vector_size == BUCKET_SIZE), 사용할 수있는 이미하는 해시 테이블과 같이 표현 될 수있다 . 내가 만들려고 노력하고있어 이것이다, 아주 간단한 해시 테이블을 구성, 그것은 아무것도, 심지어 우리가 해시 테이블을 표현하기 위해 목록을 사용할 수 있습니다 더 용기보다 없습니다. 우리가 조직화 된 데이터의 무리 (심지어이는 힙 데이터 유형하지 않을 수 있습니다)가 때 우리가 해시 테이블 (즉, 벡터)에 저장하는 방법, 중요합니까? 해시 함수는 특히 중요하다 , 예를 들어, 해시 함수가 MD5 수 실제로 거의 임의의 길이 스트링 128 비트 열을 생성하는 상기 언급. (이것보다 일반적으로 더 작은 C ++ 프로그램, 해시 테이블 사용 벡터 천천히 C ++에서 성장하기 때문에, 근처에 두 번 찾기 방법의 사용을 소수의 증가) 128 비트 고정 된 길이로 해시 함수 후 디지털 미조직 그것은 (다시 해시 함수의 중요성을 강조, 놀라운했다 아마도이 실현 해시 함수는 어렵지 않지만 개념은 매우 중요하다 ).

  마지막 ③ 해시 테이블 unorder_set로서 구현 바닥 지지체와 상기 하단 구현할 때 사용되는 데이터 구조 등 unorder_map ++ C 벡터 버킷을 데이터 구조는 용기지지 딕셔너리 가장 중요한가 사용되는 수신 된 해시 함수 (기능 그 ) 개체 또는 펑 말했다.

 

추천

출처www.cnblogs.com/Ccluck-tian/p/11930365.html