SHA 해싱

SHA(Secure Hashing Algorithm)는 안전한 해시 알고리즘으로 암호학적 해시 함수들의 모음입니다.

SHA-0을 시작으로 이후 변형된 SHA-1이 발표되었고, 이후 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었습니다.


SHA-256과 SHA-512는 각각 32비트, 64비트 워드를 사용하는 해시함수이며 몇몇 상수들이 다르지만 그 구조는 라운드의 수를 빼고는 같습니다.

SHA-224와 SHA-384는 SHA-256과 SHA-512의 결과를 최종 해시값 길이에 맞춰 잘라낸 것입니다.


해시값을 얻어낼 때에는 원문의 각 비트들을 and, or, xor, rotr(회전) 등의 연산을 하며 해싱하게 되는데 원문에서 토시 하나라도 달라지게 되면 스노우볼 효과로 아예 해싱 결과 값이 달라지게 됩니다.


PHP를 이용하여 손쉽게 해시값을 얻어낼 수 있습니다.

함수원형

string hash ( string $algo, string $data[, bool $raw_output = false])


$original = "hyeven";

$hash = hash('sha256', $original, true);


이렇게 쉽게 값을 얻어올 수 있습니다.

이 해시 값들을 데이터베이스에 넣어주면 해싱(암호화) 끝!

- 해싱은 초기 설계부터 복호화가 불가능하게 설계한 알고리즘입니다. (원칙적으로..)

- 암호화는 복호화가 가능합니다.



SHA 해시 함수들의 특성 요약


알고리즘

해시값 크기

내부크기

블록크기

길이한계

워드크기

과정 수

사용연산

충돌

SHA-0

160

160

512

64

32

80

+,and,or,xor,rotl

발견됨

SHA-1

160

160

512

64

32

80

+,and,or,xor,rotl

공격법 존재

SHA-256/224

256/224

256

512

64

32

64

+,and,or,xor,shr,rotr

-

SHA-512/384

512/384

512

1024

128

64

80

+,and,or,xor,shr,rotr


'Basics > Hashing, Encryption' 카테고리의 다른 글

RSA 암호화  (0) 2014.11.15
Posted by 긍정왕오킹