1.hash 개념
124211132 리더면서 붙이기(나누기, 더하기, 곱하기 등등)
이미지
해시의 주요 특징
- 일방향성: 해시 값으로부터 원래 데이터를 복원할 수 없음
- 고정 길이 출력: 입력 데이터의 크기와 상관없이 항상 같은 길이의 해시 값 생성
- 결정적: 같은 입력에 대해 항상 같은 해시 값 출력
- 빠른 연산: 효율적인 계산 가능
해시의 활용 분야
- 데이터 무결성 검증: 파일 다운로드 시 해시 값 비교로 변조 여부 확인
- 비밀번호 저장: 원본 비밀번호가 아닌 해시 값을 저장하여 보안 강화
- 데이터 구조: 해시 테이블을 이용한 빠른 검색 및 저장
- 블록체인: 트랜잭션 검증 및 블록 연결에 활용
hashCode() 메서드
Java에서 Object 클래스의 hashCode() 메서드는 객체의 메모리 주소를 기반으로 해시 코드를 생성합니다.
java
Copy
public class Example {
public static void main(String[] args) {
String str = "Hello";
System.out.println("Hash code: " + str.hashCode());
}
}
2.hash 기초 알고리즘
1) 단순 해시 함수 예제
public class Ha01 {
public static int simpleHash(String key, int tableSize) {
int hash = 0;
for (char c : key.toCharArray()) {
hash += c; // 각 문자의 ASCII 값을 더함
}
return hash % tableSize; // 테이블 크기로 나눈 나머지를 해시 값으로 사용
}
public static void main(String[] args) {
String key1 = "apple";
String key2 = "banana";
int tableSize = 10; // 해시 테이블 크기
System.out.println("apple의 해시 값: " + simpleHash(key1, tableSize));
System.out.println("banana의 해시 값: " + simpleHash(key2, tableSize));
}
}
실행 결과:
- "apple"의 해시 값: (97+112+112+108+101) % 10 = 530 % 10 = 0
- "banana"의 해시 값: (98+97+110+97+110+97) % 10 = 609 % 10 = 9
Share article