2016. 11. 9. 23:54ㆍBasic/etc
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 | - |
출처 : http://wonjayk.tistory.com/258
'Basic > etc' 카테고리의 다른 글
객체 지향 프로그래밍 (0) | 2016.11.09 |
---|---|
깊은 복사와 얕은 복사 (0) | 2016.11.09 |
RSA 암호화 (0) | 2016.11.09 |
Android Studio에서 SVN 사용하기 (0) | 2016.01.27 |
[HTML] Input file 태그 확장자 제한 (0) | 2015.12.17 |