一、MD5簡介
MD5全稱為「Message Digest Algorithm 5」,即消息摘要算法5。一種Hash算法,用於確保信息傳輸完整一致。
在數字證書、SSL證書和IPSec等安全領域得到廣泛應用。在密碼學中,MD5作為信息摘要算法,被廣泛地應用在軟件中,以確保數據的完整性。
二、MD5加密原理
MD5算法輸入一段不定長的信息,然後輸出一個128位的信息摘要。具體流程如下:
1. 首先將消息轉換為一個512 bits的數據塊。
2. 將該消息分成16組,每組32bits,分別用a,b,c,d來表示。
3. 初始化4個函數F, G, H, I,用子代數函數表進行處理。
4. 將這16個子組序列進行4輪處理,每輪處理輸出一個32bits的數據。處理過程中需要用到F、G、H、I、a、b、c、d等參數,根據公式生成新的a、b、c、d,依次處理完16個子組,輸出最終的128bit數據。
5. 為了避免長度不夠512bits的情況,需要填充一些二進制數據。填充的規則是加入一個”1″Bit,後面補0,直到位元組數模512為448位元組,最後加上原始信息長度(以64位二進制形式)。
6. 得到信息的MD5值。
三、MD5加密代碼實現
//將16進制字符串轉換為NSData對象
+ (NSData *)hexStrToNSData:(NSString *)hexStr {
NSMutableData *data = [[NSMutableData alloc] init];
unsigned char whole_byte = 0;
char byte_chars[3] = {'\0', '\0', '\0'};
int i;
for (i = 0; i < [hexStr length] / 2; i++) {
byte_chars[0] = [hexStr characterAtIndex:i * 2];
byte_chars[1] = [hexStr characterAtIndex:i * 2 + 1];
whole_byte = strtol(byte_chars, NULL, 16);
[data appendBytes:&whole_byte length:1];
}
return data;
}
//獲取32位MD5加密字符串
+ (NSString *)get32BitMD5String:(NSString *)str {
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
const void *bytes = [data bytes];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(bytes, (CC_LONG)[data length], result);
NSMutableString *md5Str = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
[md5Str appendFormat:@"%02x",result[i]];
}
return md5Str;
}
//獲取16位MD5加密字符串
+ (NSString *)get16BitMD5String:(NSString *)str {
NSString *md5_32 = [self get32BitMD5String:str];
NSString *md5_16 = [[md5_32 substringToIndex:24] substringFromIndex:8];
return md5_16;
}
四、MD5加密使用
使用MD5加密,只需要調用相應的方法即可,例如:
NSString *str = @"hello world"; NSString *md5_32 = [MD5Util get32BitMD5String:str]; NSString *md5_16 = [MD5Util get16BitMD5String:str]; NSLog(@"32位MD5加密字符串:%@", md5_32); NSLog(@"16位MD5加密字符串:%@", md5_16);
五、MD5加密實現原理
MD5加密算法不僅可以計算Text文本的MD5值,還可以針對文件進行MD5值的計算。如果針對一個文本進行MD5值的計算,我們只需要將這個文本轉變成相應的ASCII碼,然後再在這個碼中進行迭代計算,最終得到MD5值。
MD5算法具有不可逆性,即通過MD5算法加密後的密文無法被破解得到明文。
六、MD5加密的應用
MD5加密在計算機網絡中被廣泛應用。通常,MD5被用在密碼驗證、網站安全、數字簽名等領域。
例如,在iOS開發中,我們經常使用MD5加密進行字符串安全傳輸,確保傳輸的字符串不會被竊取,從而保護用戶數據安全。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/251787.html
微信掃一掃
支付寶掃一掃