iOS開發(fā)之系統(tǒng)MD5加密

常見的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前來說一般是不可逆的。MD5生成的是固定的128bit,即128個(gè)0和1的二進(jìn)制位,而在實(shí)際應(yīng)用開發(fā)中,通常是以16進(jìn)制輸出的,所以正好就是32位的16進(jìn)制,說白了也就是32個(gè)16進(jìn)制的數(shù)字。
MD5主要特點(diǎn)是 不可逆,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一樣(也不是絕對的,但基本是不能一樣的)。

#import@interface MD5Encrypt : NSObject // MD5加密 /* *由于MD5加密是不可逆的,多用來進(jìn)行驗(yàn)證 */ // 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{

//要進(jìn)行UTF8的轉(zhuǎn)碼
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{

//要進(jìn)行UTF8的轉(zhuǎn)碼 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容