MD5 iOS代码加密

创建MD5类,代码如下

#import <Foundation/Foundation.h>

@interface CJMD5 : NSObject

+(NSString *)md5HexDigest:(NSString *)input;

@end

#import "CJMD5.h"

#import <CommonCrypto/CommonDigest.h>

@implementation CJMD5

+(NSString *)md5HexDigest:(NSString *)input{

const char* str = [input UTF8String];

unsigned char result[CC_MD5_DIGEST_LENGTH];

CC_MD5(str, strlen(str), result);

NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];

for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {

[ret appendFormat:@"%02X",result];

}

return ret;

}

@end

MD5是不可逆的只有加密没有解密,iOS代码加密使用方式如下

NSString *userName = @"cerastes";

NSString *password = @"hello Word";

//   MD5加密

NSString *md5 = [CJMD5 md5HexDigest:password];

NSLog(@"%@",md5);

AES加密iOS代码加密使用方法

//  AES加密

NSString *encryptedData = [AESCrypt encrypt:userName password:password];//加密

NSString *message = [AESCrypt decrypt:encryptedData password:password]; //解密

NSLog(@"加密结果 = %@",encryptedData);

NSLog(@"解密结果 = %@",message);

BASE64加密iOS代码加密添加如下方法

.h

+ (NSString*)encodeBase64String:(NSString *)input;

+ (NSString*)decodeBase64String:(NSString *)input;

+ (NSString*)encodeBase64Data:(NSData *)data;

+ (NSString*)decodeBase64Data:(NSData *)data;

.m

+ (NSString*)encodeBase64String:(NSString * )input {

NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

data = [GTMBase64 encodeData:data];

NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

return base64String;

}

+ (NSString*)decodeBase64String:(NSString * )input {

NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

data = [GTMBase64 decodeData:data];

NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

return base64String;

}

+ (NSString*)encodeBase64Data:(NSData *)data {

data = [GTMBase64 encodeData:data];

NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

return base64String;

}

+ (NSString*)decodeBase64Data:(NSData *)data {

data = [GTMBase64 decodeData:data];

NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

return base64String;

}

BASE64加密iOS代码加密使用方法

//    BASE64加密

NSString *baseEncodeString = [GTMBase64 encodeBase64String:password];

NSString *baseDecodeString = [GTMBase64 decodeBase64String:baseEncodeString];

NSLog(@"baseEncodeString = %@",baseEncodeString);

NSLog(@"baseDecodeString = %@",baseDecodeString);

除了以上的三种算法的iOS代码加密之外,iOS应用代码加密也是非常重要的,这里就不贴代码了,主要的iOS代码加密方式如下,

1)本地数据加密

对NSUserDefaults,sqlite存储文件数据加密,保护帐号和关键信息。

2)URL编码加密

对程序中出现的URL进行编码加密,防止URL被静态分析

3)网络传输数据加密

对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取

4)方法体,方法名高级混淆

对应用程序的方法名和方法体进行混淆,保证源码被逆向后无法解析代码

5)程序结构混排加密

对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低

iOS常用的加密方式的更多相关文章

  1. iOS常用的加密方式--备用

    MD5 iOS代码加密 创建MD5类,代码如下 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSStri ...

  2. iOS 中的加密方式

    iOS 中的加密方式 1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ...

  3. iOS学习——iOS常用的存储方式

    不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.根据要存储的的数据的大小.存储性质以及存储类型,在iOS和An ...

  4. java中常用的加密方式

    加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...

  5. Java中常用的加密方式(附多个工具类)

    一.Java常用加密方式 Base64加密算法(编码方式) MD5加密(消息摘要算法,验证信息完整性) 对称加密算法 非对称加密算法 数字签名算法 数字证书 二.分类按加密算法是否需要key被分为两类 ...

  6. iOS中的加密方式 与 文件解压缩

    1.Base64加密方式 Base64是一种加密方法,可逆的加密. Base64中的可打印字符包括字母A-Z.a-z.数字0-9,这样共有62个字符./ + 填充 = echo -n BC|base6 ...

  7. iOS常用的存储方式介绍

    在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用的存储工具/方式: NSU ...

  8. iOS常用的存储方式

    在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用的存储工具/方式: NSU ...

  9. iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全

    演示样例项目下载地址  https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h&g ...

随机推荐

  1. [bzoj4259][bzoj4503] 残缺的字符串 [FFT]

    题面 传送门 bzoj上的这两题是一样的...... 正文 我看到这道题,第一想法是跑魔改过的KMP,然后很快发现不可行 于是想换个角度思考 其实,本题最大的问题就在于通配符的存在:它可以匹配任意一个 ...

  2. imx6 PCIE使能加载ath9k无线网卡

    imx6q配置pcie无线网卡遇到如下问题: imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00 pci_bus 0000:00: root ...

  3. UVA 11991 vector

    Though Rujia Liu usually sets hard problems for contests (for example, regional contests likeXi’an 2 ...

  4. react 基础语法复习1- 搭建开发环境

    之前有看过阮一峰老师的react教程跟着做了一遍,学习了一下.好久没看,有点忘记了,这次跟着脚手架工具系统的复习一遍.顺便学习学习 react-router 和 redux 首先,脚手架工具我使用的是 ...

  5. 在做展开功能的时候,字体变多了,字体会变大的bug的解决方案

    在没有限制高度的情况下字体会变大,要做展开效果,当然不能限制高度. 解决方案是,加个max-height就可以解决这个问题

  6. codeforce div2 426 D. The Bakery

    D. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard inp ...

  7. 【HDOJ5519】Kykneion asma(状压DP,容斥)

    题意:给定n和a[i](i=0..4),求所有n位5进制数中没有前导0且i出现的次数不超过a[i]的数的个数 2<=n<=15000,0<=a[i]<=3e4 思路:设f(n, ...

  8. 【UVA11859】Division Game(SG函数,Nim游戏)

    题意:给定一个n*m的矩阵,两个游戏者轮流操作. 每次可以选一行中的1个或多个大于1的整数,把它们中的每个数都变成它的某个真因子,不能操作的输. 问先手能否获胜 n,m<=50,2<=a[ ...

  9. DataBinder.Eval值的判断

    原文发布时间为:2009-04-10 -- 来源于本人的百度文章 [由搬家工具导入] 问:如何对<%# DataBinder.Eval(Container.DataItem,"Ly_R ...

  10. c# dynamic,maybe I should say it is just some shortcut for "Object", box and unbox, without the cast

    dynamic: void Main() { var b="2"; dynamic a="2"; if(a.GetType()==typeof(int))b+= ...