MD5는 입력 데이터 (길이에 상관없는 하나의 메시지)로부터 128 비트 메시지 축약을 만듦으로써 데이터 무결성을 검증하는데 사용되는 알고리즘이다. MD5는 전자 서명 응용프로그램들과 함께 사용할 목적으로 미국 MIT의 로널드 리베스트 교수가 개발하였으며, 큰 파일들은 RSA와 같은 공개키 암호 사용법하에서 개인키와 함께 암호화되기 전에 안전한 방법으로 압축되어야만 한다. MD5 규격은 현재 IETF RFC 1321에 명시되어 있다. MD5 규격에 따르면, MD5 알고리즘에 입력된 어떤 두 개의 메시지가 동일한 메시지 축약을 결과로 내거나, 또는 어떤 메시지 축약을 통해 엉뚱한 메시지가 만들어지는 것은 "계산적으로 불가능"하다고 한다. MD5는 리베스트가 만들어낸 메시지 축약 알고리즘으로는 세 번째이다. 초기의 8 비트 버전인 MD2, 그리고 MD4와 최신 버전인 MD5 등은 비슷한 구조를 가지고 있지만, MD2는 8 비트 컴퓨터에 최적화되어 있는데 비해, MD4와 MD5는 32 비트 컴퓨터에 최적화되어 있다. MD5 알고리즘은 MD4의 확장판인데, MD4에 비해 속도가 빠르지는 않지만, 데이터 보안성에 있어 더 많은 확신을 제공한다.

출처 : http://terms.co.kr/MD5.htm 


파일의 유효성 검사를 하기위해서 MD5 hash를 해서 비교를 해야할 필요가 있어 테스트를 해봅니다.

터미널(Mac OS), Objective-C(iPhone), Java(Android)에서 테스트를 해보았습니다.



유효성 검사에 사용된 비교용 파일

  12월 운세와 2012년 운세가 궁금하신 분들은 아래의 링크로 다운로드 받습니다 ^^ ㅋ

  월별운세 12월

  - 아이폰 - 앱스토어 - http://goo.gl/mZojj
  - 안드로이드 - 마켓 - http://goo.gl/JfEG9
  - 안드로이드 - 티스토어 - http://goo.gl/i9psE

  2012 토정비결S
  - 아이폰 - 앱스토어 - http://goo.gl/WCXT9
  - 안드로이드 - 마켓 - http://goo.gl/lL33w
  - 안드로이드 - 티스토어 - http://goo.gl/7HWi8  






Java





 테스트 결과

  06a318e14c56490faf6ed588fad9b382
 


테스트 프로젝트




Objective-C(iPhone)

출처 : http://goo.gl/SsTqN


#import <CommonCrypto/CommonDigest.h>
  @implementation NSData(MD5)   - (NSString*)MD5 { // Create byte array of unsigned chars unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];   // Create 16 byte MD5 hash value, store in buffer CC_MD5(self.bytes, self.length, md5Buffer);   // Convert unsigned char buffer to NSString of hex values NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [output appendFormat:@"%02x",md5Buffer[i]];   return output; }   @end

#import "NSData+MD5.h"
  ...   NSString *path = [[NSBundle mainBundle] pathForResource:@"TestFile" ofType:@"txt"]; NSData *nsData = [NSData dataWithContentsOfFile:path]; if (nsData) NSLog(@"%@", [nsData MD5]);

 테스트 결과

 2011-12-02 15:07:05.129 iPhoneApp[1742:b303] 06a318e14c56490faf6ed588fad9b382
 

테스트 프로젝트




터미널



 테스트 결과

 06a318e14c56490faf6ed588fad9b382
 












저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by croute

트랙백 주소 : http://croute.me/trackback/507 관련글 쓰기

댓글을 달아 주세요

  1. BlogIcon jaws 2013/01/04 14:57  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 많은 도움이 되었습니다.