国产精品入口免费视频_亚洲精品美女久久久久99_波多野结衣国产一区二区三区_农村妇女色又黄一级真人片卡

介紹iOS中MD5加密算法的使用

時(shí)間:2022-04-04 20:02:32 手機(jī) 我要投稿
  • 相關(guān)推薦

介紹iOS中MD5加密算法的使用

  前言

  軟件開發(fā)過程中,對(duì)數(shù)據(jù)進(jìn)行加密是保證數(shù)據(jù)安全的重要手段,常見的加密有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值不一樣(也不是絕對(duì)的,但基本是不能一樣的)。

  MD5算法還具有以下性質(zhì):

  1、壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。

  2、容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易。

  3、抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的MD5值都有很大區(qū)別。

  4、弱抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

  5、強(qiáng)抗碰撞:想找到兩個(gè)不同的數(shù)據(jù),使它們具有相同的MD5值,是非常困難的。

  6、MD5加密是不可解密的,但是網(wǎng)上有一些解析MD5的,那個(gè)相當(dāng)于一個(gè)大型的數(shù)據(jù)庫,通過匹配MD5去找到原密碼。所以,只要在要加密的字符串前面加上一些字母數(shù)字符號(hào)或者多次MD5加密,這樣出來的結(jié)果一般是解析不出來的。

  MD5的應(yīng)用:

  由于MD5加密算法具有較好的安全性,而且免費(fèi),因此該加密算法被廣泛使用

  大多數(shù)的登錄功能向后臺(tái)提交密碼時(shí)都會(huì)使用到這種算法

  注意點(diǎn):

  (1)一定要和后臺(tái)開發(fā)人員約定好,MD5加密的位數(shù)是16位還是32位(大多數(shù)都是32位的),16位的可以通過32位的轉(zhuǎn)換得到。

 。2)MD5加密區(qū)分 大小寫,使用時(shí)要和后臺(tái)約定好。

  MD5解密:

  解密網(wǎng)站:http://www.cmd5.com/

  為了讓MD5碼更加安全 涌現(xiàn)了很多其他方法 如加鹽。 鹽要足夠長足夠亂 得到的MD5碼就很難查到。

  終端代碼:$ echo -n abc|openssl md5 給字符串a(chǎn)bc加密、

  蘋果包裝了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@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

【介紹iOS中MD5加密算法的使用】相關(guān)文章:

IOS7新功能Airdrop使用教程03-22

iPhone ios7鬧鐘介紹05-06

ios7美化插件介紹03-18

ios7八門神器怎么使用06-04

iOS7.0.6如何正確維護(hù)和使用電池04-12

md5是什么意思04-22

ios7.1.2怎么升級(jí)ios803-18

iOS設(shè)置輸入法的詳細(xì)步驟介紹03-27

ios7如何降級(jí)到ios604-28

ios7降低到ios6的方法03-18