iOSが開発したシステムMD 5暗号化

2311 ワード

一般的な暗号化にはBase 64暗号化とMD 5暗号化があります.Base 64暗号化は可逆的であり、MD 5暗号化は現在一般的に不可逆的である.MD 5は固定128 bit,すなわち128個の0と1のバイナリビットを生成するが,実際の応用開発では通常16進数で出力されるので,ちょうど32ビットの16進数,すなわち32個の16進数である.
MD 5の主な特徴は不可逆であり、同じデータのMD 5値は肯定的に同じであり、異なるデータのMD 5値は異なる(絶対的ではないが、基本的には同じではない).#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 @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
参考著者:LYSNote