iOS 에서 MD5 암호 화 알고리즘 에 대한 소개 와 사용

4124 단어 iosmd5암호 화
머리말
소프트웨어 개발 과정 에서 데 이 터 를 암호 화 하 는 것 은 데이터 안전 을 확보 하 는 중요 한 수단 으로 흔히 볼 수 있 는 암호 화 는 Base 64 암호 화 와 MD5 암호 화 이다.Base 64 암호 화 는 역 동적 이 고 MD5 암호 화 는 현재 로 서 는 역 동적 이지 않다.
MD5 는 고정된 128 bit,즉 128 개의 0 과 1 의 바 이 너 리 를 생 성 하 는데 실제 응용 개발 에 서 는 보통 16 진수 로 출력 되 기 때문에 32 비트 의 16 진수 이 고,말하자면 32 개의 16 진수 이다.
MD5 의 주요 특징 은 거 스 를 수 없다 는 것 이다.같은 데이터 의 MD5 값 은 반드시 같 고 서로 다른 데이터 의 MD5 값 은 다르다 는 것 이다(절대적 인 것 도 아니 지만 기본적으로 같 을 수 없다).
MD5 알고리즘 은 다음 과 같은 성질 을 가지 고 있 습 니 다.
      1.압축성:임의의 길이 의 데이터,계 산 된 MD5 값 의 길 이 는 모두 고정 되 어 있 습 니 다.
      2.계산 하기 쉽다:원래 데이터 에서 MD5 값 을 계산 하 는 것 은 매우 쉽다.
      3.수정 저항 성:원래 의 데 이 터 를 변경 할 때 1 개의 바이트 만 수정 하 더 라 도 얻 은 MD5 값 은 큰 차이 가 있 습 니 다.
      4.약 한 충돌 저항:원래 데이터 와 MD5 값 을 알 고 있 습 니 다.같은 MD5 값 을 가 진 데이터(즉,데이터 위조)를 찾 는 것 은 매우 어렵 습 니 다.
      5.강 한 충돌 저항:두 개의 서로 다른 데 이 터 를 찾 아서 똑 같은 MD5 값 을 가지 게 하 는 것 은 매우 어 려 운 일이 다.
      6.MD5 암호 화 는 복호화 할 수 없 지만 인터넷 에서 MD5 를 분석 하 는 것 이 있 습 니 다.그것 은 대형 데이터 베이스 에 해당 하 며 MD5 와 일치 하여 원래 의 비밀 번 호 를 찾 습 니 다.따라서 암호 화 할 문자열 앞 에 알파벳 숫자 기호 나 MD5 암호 화 를 여러 번 추가 하면 결 과 는 일반적으로 해석 할 수 없습니다.
MD5 의 응용:
MD5 암호 화 알고리즘 은 비교적 좋 은 안전성 을 가지 고 무료 이기 때문에 이 암호 화 알고리즘 은 광범 위 하 게 사용 된다.
대부분의 로그 인 기능 이 배경 에 비밀 번 호 를 제출 할 때 이 알고리즘 을 사용 합 니 다.
주의 점:
      (1)반드시 백 스테이지 개발 자 와 약속 해 야 한다.MD5 암호 화 된 자릿수 가 16 비트 인지 32 비트 인지 16 비트 는 32 비트 로 전환 할 수 있다.
      (2)MD5 암호 화 는 대소 문 자 를 구분 하고 사용 시 배경 과 약속 해 야 한다.
MD5 복호화:
사이트 복호화:http://www.cmd5.com/
MD5 사 이 즈 를 더욱 안전하게 하기 위해 소금 을 넣 는 등 다른 방법 이 많이 생 겨 났 습 니 다.소금 이 충분히 길 어야 함부로 구 할 수 있 는 MD5 사 이 즈 는 찾기 어렵다.
터미널 코드:$echo-n abc|openssl md5 문자열 abc 암호 화,
애플 은 MD5 암호 화 방법 을 포장 하여 사용 하기에 매우 편리 하 다.

#import@interface MD5Encrypt : NSObject
// MD5  
/*
*  MD5       ,       
*/
// 32   
+(NSString *)MD5ForLower32Bate:(NSString *)str;
// 32   
+(NSString *)MD5ForUpper32Bate:(NSString *)str;
// 16   
+(NSString *)MD5ForUpper16Bate:(NSString *)str;
// 16   
+(NSString *)MD5ForLower16Bate:(NSString *)str;
@end

#import "MD5Encrypt.h"
#import <CommonCrypto/CommonDigest.h>

@implementation MD5Encrypt

#pragma mark - 32    
+(NSString *)MD5ForLower32Bate:(NSString *)str{

  //   UTF8   
  const char* input = [str UTF8String];
  unsigned char result[CC_MD5_DIGEST_LENGTH];
  CC_MD5(input, (CC_LONG)strlen(input), result);

  NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
  for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
    [digest appendFormat:@"%02x", result[i]];
  }

  return digest;
}

#pragma mark - 32    
+(NSString *)MD5ForUpper32Bate:(NSString *)str{

  //   UTF8   
  const char* input = [str UTF8String];
  unsigned char result[CC_MD5_DIGEST_LENGTH];
  CC_MD5(input, (CC_LONG)strlen(input), result);

  NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
  for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
    [digest appendFormat:@"%02X", result[i]];
  }

  return digest;
}

#pragma mark - 16    
+(NSString *)MD5ForUpper16Bate:(NSString *)str{

  NSString *md5Str = [self MD5ForUpper32Bate:str];

  NSString *string;
  for (int i=0; i<24; i++) {
    string=[md5Str substringWithRange:NSMakeRange(8, 16)];
  }
  return string;
}


#pragma mark - 16    
+(NSString *)MD5ForLower16Bate:(NSString *)str{

  NSString *md5Str = [self MD5ForLower32Bate:str];

  NSString *string;
  for (int i=0; i<24; i++) {
    string=[md5Str substringWithRange:NSMakeRange(8, 16)];
  }
  return string;
}

@end
총결산
이상 은 iOS 에서 MD5 암호 화 알고리즘 에 대한 소개 와 사용 입 니 다.iOS 개발 자 여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기