zoukankan      html  css  js  c++  java
  • iOS开发-密码加密MD5

    密码加密MD5

    • 创建NSString的类目
    1. NSString+Password.h

       1 //
       2 //  NSString+Password.h
       3 //  03.数据加密
       4 //
       5 //  Created by wyh on 15-1-10.
       6 //  Copyright (c) 2015年 itcast. All rights reserved.
       7 //
       8 
       9 
      10 #import <Foundation/Foundation.h>
      11 
      12 @interface NSString (Password)
      13 
      14 /**
      15  *  32位MD5加密
      16  *
      17  *  @return 32位MD5加密结果
      18  */
      19 - (NSString *)MD5;
      20 
      21 /**
      22  *  SHA1加密
      23  *
      24  *  @return SHA1加密结果
      25  */
      26 - (NSString *)SHA1;
      27 
      28 @end
    2. NSString+Password.m
       1 //
       2 //  NSString+Password.m
       3 //  数据加密
       4 //
       5 //  Created by wyh on 15-1-10.
       6 //  Copyright (c) 2015年 itcast. All rights reserved.
       7 //
       8 
       9 #import "NSString+Password.h"
      10 #import <CommonCrypto/CommonDigest.h>
      11 
      12 @implementation NSString (Password)
      13 
      14 #pragma mark 使用MD5加密字符串
      15 - (NSString *)MD5
      16 {
      17     const char *cStr = [self UTF8String];
      18     unsigned char digest[CC_MD5_DIGEST_LENGTH];
      19 
      20     CC_MD5(cStr, strlen(cStr), digest);
      21 
      22     NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
      23 
      24     for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
      25         [result appendFormat:@"%02x", digest[i]];
      26     }
      27 
      28     return result;
      29 }
      30 
      31 #pragma mark 使用SHA1加密字符串
      32 - (NSString *)SHA1
      33 {
      34     const char *cStr = [self UTF8String];
      35     NSData *data = [NSData dataWithBytes:cStr length:self.length];
      36     uint8_t digest[CC_SHA1_DIGEST_LENGTH];
      37 
      38     CC_SHA1(data.bytes, data.length, digest);
      39 
      40     NSMutableString *result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
      41 
      42     for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
      43         [result appendFormat:@"%02x", digest[i]];
      44     }
      45     
      46     return result;
      47 }
      48 
      49 @end
    • 使用步骤:

    1. 在使用的类中加入类目:#import "NSString+Password.h"

    2. 用要加密的字符串调方法MD5或SHA1,返回加密后的字符串:加密结果=[self.userPwd.text MD5];

    3. 结束

    • 简介
    1. Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321
    2. MD5用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现MD5的典型应用是对一段字节串产生指纹,以防止被“篡改”。例如,可以对一个readme.txt生成一个MD5的值并记录在案,如果其他人修改了文件中的任何内容,对该文件重新计算的MD5值会发生变化MD5还广泛用于操作系统的登录认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方面
    3. MD5是不可逆
    4. MD5同样的数据加密结果是一样的?密码上的一个忌讳
    5. MD5在用的时候要加点”盐”及私钥,不然会被破解,最好定义一个宏,来存添加的那部分字符串
    6.  
      破解网站:http://www.cmd5.com
  • 相关阅读:
    BZOJ 1008: [HNOI2008]越狱
    BZOJ 1007: [HNOI2008]水平可见直线
    BZOJ 1005: [HNOI2008]明明的烦恼
    【LibreOJ10121】与众不同(RMQ,二分)
    【NOIP模拟】数字对(RMQ,二分)
    【POJ3264】Balanced Lineup(RMQ)
    【JZOJ4857】Tourist Attractions(Bitset)
    【BZOJ2330】糖果(差分约束系统,强连通分量,拓扑排序)
    C++对拍数据生成
    C++字符串读入
  • 原文地址:https://www.cnblogs.com/wangyinghui/p/4353724.html
Copyright © 2011-2022 走看看