iOS 에서 MD5 암호 화 알고리즘 에 대한 소개 와 사용
소프트웨어 개발 과정 에서 데 이 터 를 암호 화 하 는 것 은 데이터 안전 을 확보 하 는 중요 한 수단 으로 흔히 볼 수 있 는 암호 화 는 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 개발 자 여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.