zoukankan      html  css  js  c++  java
  • MD5加密,Base64加密/解密,AES加密/解密

    1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示。

    2.使用前的配置及注意事项:

     (1) 在build phases中的GTMBase64.m需要设置 -fno-objc-arc

     (2) 在#import "NSString+Base64.m”文件中导入   #import <Foundation/Foundation.h>

     (3)在#import "GTMBase64.m”文件中添加          #import <CommonCrypto/CommonCrypto.h>

    3. CusMD5.h 和 CusMD5.m 文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #import <Foundation/Foundation.h>
     
    @interface CusMD5 : NSObject
     
    + (NSString *)md5String:(NSString *)str;
     
    @end
     
    #import "CusMD5.h"
    #import <CommonCrypto/CommonDigest.h>
     
    @implementation CusMD5
     
    + (NSString *)md5String:(NSString *)str {
        const char *original_str = [str UTF8String];
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        CC_MD5(original_str, strlen(original_str), result);
        NSMutableString *hash = [NSMutableString string];
        for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
            [hash appendFormat:@"%02X", result[i]];
        return [hash lowercaseString]; }
     
    @end

       ---> MD5只能称为一种不可逆的加密算法,只能用作一些检验过程,不能恢复其原文。

    4. 基本使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #import "ViewController.h"
    #import "CusMD5.h"
    #import "GTMBase64.h"
    #import "AESCrypt.h"
     
    @interface ViewController ()
     
    @end
     
    @implementation ViewController
     
    - (void)viewDidLoad {
        [super viewDidLoad];
     
        //要加密的字符串
        NSString *strForEn = @"需要加密字符串";
         
        //md5加密
        NSString *strEnRes = [CusMD5 md5String:strForEn];
        NSLog(@"md5 加密: %@",strEnRes);
         
        //base64加密
        NSData *dataEn = [strForEn dataUsingEncoding:NSUTF8StringEncoding];
        NSData *dataEnRes = [GTMBase64 encodeData:dataEn];
        //把加密结果转成string
        NSString *base64EnRes = [[NSString alloc] initWithData:dataEnRes encoding:NSUTF8StringEncoding];
        NSLog(@"base64加密: %@",base64EnRes);
         
        //base64解密
        NSData *resDeBase64 = [GTMBase64 decodeData:dataEnRes];
        NSString *strDeBase64 = [[NSString alloc] initWithData:resDeBase64 encoding:NSUTF8StringEncoding];
        NSLog(@"base64解密: %@",strDeBase64);
     
     
        //aes 加密
        NSString *strAESEnRes = [AESCrypt encrypt:strForEn password:@"secret"];
        NSLog(@"aes 加密: %@",strAESEnRes);
         
        //aes 解密
        NSString *strAESDeRes = [AESCrypt decrypt:strAESEnRes password:@"secret"];
        NSLog(@"aes 解密: %@",strAESDeRes);
    }
     
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
     
    @end
  • 相关阅读:
    使用ZooKeeper实现Java跨JVM的分布式锁
    基于ZooKeeper的分布式锁和队列
    activiti数据库表结构剖析
    visualvm监控jvm及远程jvm监控方法
    使用visualvm 远程监控 JVM
    java jprofile
    Linux服务器上监控网络带宽的18个常用命令
    Redis-sentinel哨兵模式集群方案配置
    电容的去耦半径
    DC-DC BUCK电源芯片的基本原理和组成
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/6076427.html
Copyright © 2011-2022 走看看