swift 문자열 hash 알고리즘

1332 단어
회사 의 프로젝트 수 요 는 세 개의 정형 을 하나의 정형 에 투사 하여 데이터 전 송 량 을 줄 여야 한다.전송 후의 데 이 터 는 역 컴 파일 이 필요 하지 않 고 사실상 역 컴 파일 이 나 오지 않 아 hash 알고리즘 으로 이 루어 질 생각 이 들 었 습 니 다.
1. Hash 원리 및 제한
  • Hash 의 주요 원 리 는 큰 범 위 를 작은 범위 에 투사 하 는 것 이다.따라서 입력 한 실제 값 의 개 수 는 작은 범위 와 비슷 하거나 더 작 아야 합 니 다.그렇지 않 으 면 충돌 이 매우 많 을 것 이다.
  • Hash 가 단 방향 함수 에 가 까 워 지기 때문이다.그래서 데 이 터 를 암호 화 할 수 있 습 니 다.
  • 서로 다른 응용 은 Hash 함수 에 대해 서로 다른 요 구 를 가진다.예 를 들 어 암호 화 에 사용 되 는 Hash 함 수 는 단일 함수 와 의 차 이 를 고려 하고 찾 는 Hash 함 수 는 작은 범위 에 비 친 충돌 율 을 고려 합 니 다.

  • 2. 흔히 볼 수 있 는 Hash 알고리즘 은 swfit 의 실현
  • 덧셈 Hash
  • 비트 연산 Hash
  • extension String {
        func stringHash() -> Int {
            var hash:Int64 = 0;
            var x:Int64 = 0;
            for i in 0 ..< self.characters.count {
                hash = (hash << 4 ) + Int64((self as NSString).character(at:i));
                let x = hash & Int64.init(0xF0000000)
                if x != 0 {
                    hash ^= (x >> 24);
                    hash &= ~x;
                }
            }
            hash = (hash & Int64.init(0x7FFFFFFF))
            hash = hash % 2147483647
            return Int(hash);
        }
    }
    
  • 곱셈 Hash
  • 나 누 기 Hash
  • 체크 표 Hash
  • 혼합 해시
  • 여기 서 변위 hash 를 선택 하여 기대 하 는 효 과 를 얻 었 습 니 다. 후속 적 인 다른 방법의 hash 는 시간 이 있 으 면 함께 보충 할 것 입 니 다.

    좋은 웹페이지 즐겨찾기