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 |
---|