最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年10月19日 11:50:26   作者:LYSNote  
MD5加密是最常用的加密方法之一,是從一段字符串中通過相應(yīng)特征生成一段32位的數(shù)字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文章就給大家介紹了iOS中MD5加密算法,已經(jīng)iOS中MD5加密算法的使用,有需要的朋友們可以參考借鑒。

前言

軟件開發(fā)過程中,對數(shù)據(jù)進行加密是保證數(shù)據(jù)安全的重要手段,常見的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前來說一般是不可逆的。

MD5生成的是固定的128bit,即128個0和1的二進制位,而在實際應(yīng)用開發(fā)中,通常是以16進制輸出的,所以正好就是32位的16進制,說白了也就是32個16進制的數(shù)字。

MD5主要特點是 不可逆,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一樣(也不是絕對的,但基本是不能一樣的)。

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

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

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

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

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

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

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

MD5的應(yīng)用:

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

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

注意點:

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

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

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加密是不可逆的,多用來進行驗證
*/
// 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的轉(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{

  //要進行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

總結(jié)

以上就是iOS中MD5加密算法的介紹和使用,希望能對各位iOS開發(fā)者們能有所幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • iOS 判斷頁面中的該填項是否填完整,改變按鈕狀態(tài)的方法

    iOS 判斷頁面中的該填項是否填完整,改變按鈕狀態(tài)的方法

    下面小編就為大家分享一篇iOS 判斷頁面中的該填項是否填完整,改變按鈕狀態(tài)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS開發(fā)之視圖切換

    iOS開發(fā)之視圖切換

    在iOS開發(fā)中視圖的切換是很頻繁的,獨立的視圖應(yīng)用在實際開發(fā)過程中并不常見,除非你的應(yīng)用足夠簡單。在iOS開發(fā)中常用的視圖切換有三種,今天我們將一一介紹,希望大家能夠喜歡。
    2016-04-04
  • Objective-C中block循環(huán)引用問題詳解

    Objective-C中block循環(huán)引用問題詳解

    這篇文章主要給大家介紹了關(guān)于Objective-C中block循環(huán)引用問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Objective-C具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 舉例講解iOS應(yīng)用開發(fā)中對設(shè)計模式中的策略模式的使用

    舉例講解iOS應(yīng)用開發(fā)中對設(shè)計模式中的策略模式的使用

    這篇文章主要介紹了iOS應(yīng)用設(shè)計中對設(shè)計模式中的策略模式的使用,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下
    2016-03-03
  • iOS實現(xiàn)“搖一搖”與“掃一掃”功能示例代碼

    iOS實現(xiàn)“搖一搖”與“掃一掃”功能示例代碼

    本篇文章主要介紹了iOS實現(xiàn)“搖一搖”與“掃一掃”功能示例代碼,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • 淺談SwiftUI 里面$0是什么意思如何用

    淺談SwiftUI 里面$0是什么意思如何用

    這篇文章主要介紹了淺談SwiftUI 里面$0是什么意思如何用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • iOS實現(xiàn)視頻下載并自動保存到相冊功能

    iOS實現(xiàn)視頻下載并自動保存到相冊功能

    這篇文章主要為大家詳細介紹了ios 視頻下載功能實現(xiàn),并自動保存到相冊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • iOS MRC 下 block 循環(huán)引用問題實例講解

    iOS MRC 下 block 循環(huán)引用問題實例講解

    本文通過文字說明加代碼的形式給大家介紹了iOS MRC 下 block 循環(huán)引用問題,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-12-12
  • 淺談iOS開發(fā)如何適配暗黑模式(Dark Mode)

    淺談iOS開發(fā)如何適配暗黑模式(Dark Mode)

    這篇文章主要介紹了淺談iOS開發(fā)如何適配暗黑模式(Dark Mode),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • iOS實現(xiàn)文字水平無間斷滾動效果

    iOS實現(xiàn)文字水平無間斷滾動效果

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)文字水平無間斷滾動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論

永靖县| 余江县| 上高县| 平陆县| 曲松县| 天水市| 道孚县| 贵州省| 自治县| 綦江县| 通许县| 贞丰县| 重庆市| 抚州市| 宝坻区| 高要市| 当雄县| 高青县| 广灵县| 武功县| 灵宝市| 西华县| 新郑市| 凉城县| 育儿| 合江县| 睢宁县| 淮安市| 息烽县| 万全县| 峡江县| 富蕴县| 吉木萨尔县| 惠东县| 丹凤县| 松阳县| 漯河市| 宣恩县| 黑水县| 安阳县| 聊城市|