iOS代码加密常用加密方式

在今天的面试中,被问到了iOS是采用什么进行加密解密操作的,我的回答是这样的:AES,MD5,Base 64,然后是对这几种加密算法进行了一下简单的介绍和概述和几种算法之间的不同点和优缺点。然而,收到的回答是:这些都不是iOS的加密!我顿时就无语了,这不就是iOS加密所用到的方法么?然后向面试官请教了一下:MD5是一种摘要。。。。什么叫加密呢?加密是客户端对数据加密和服务器端采用秘钥对数据进行解密处理,为了数据的安全考虑。要说加密应该是RSA。幸亏之前有了解过RSA,只是了解的不是很彻底和清楚。。。。。。

回来还是对iOS的加密解密持有一种怀疑的态度,还是自己网上找找资料学习学习吧!

iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密:

  1. MD5 iOS代码加密

    创建MD5类,代码如下

    #import <Foundation/Foundation.h>

    @interface CJMD5 : NSObject

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

    @end

  2.  

    #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

  3.  

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

    NSString *userName = @"cerastes";

    NSString *password = @"hello Word";

    //   MD5加密

    NSString *md5 = [CJMD5 md5HexDigest:password];

    NSLog(@"%@",md5);

    END

AES加密iOS代码加密

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

    //  AES加密

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

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

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

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

    END

BASE64加密iOS代码加密

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

    .h

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

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

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

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

  2.  

    .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;

    }

  3.  

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

    //    BASE64加密

    NSString *baseEncodeString = [GTMBase64 encodeBase64String:password];

    NSString *baseDecodeString = [GTMBase64 decodeBase64String:baseEncodeString];

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

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

    4.RSA加密:

    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准

    RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

    通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法.

    RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

    RSA的算法涉及三个参数,n、e1、e2。

    其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

    e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

    (n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。[1]

    RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)

    e1和e2可以互换使用,即:

    A=B^e1 mod n;B=A^e2 mod n;

    1)本地数据加密

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

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

    3)网络传输数据加密

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

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

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

    5)程序结构混排加密

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

时间: 2024-08-01 22:47:52

iOS代码加密常用加密方式的相关文章

[IOS_UI控件] IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl

IOS中最常用到的控件UIButton.UISlider.UISwitch.UISegmentedControl通过Xib文件拖动生成非常简单,其实用代码实现也是一样的简单,当然,用代码实现能够掌握到更多的东西. 上图中包涵提到的4种控件,UIButton按钮.UISlider滑块.UISwitch开关.UISegmentedControl分类 首先创建一个名为CodeControls的Empty Application项目 AppDelegate.h和AppDelegate.m文件中和IOS代

IOS开发之----常用加密方法

本文转载至 http://blog.csdn.net/wildfireli/article/details/23191983 (AES.MD5.Base64) 分类: iPhone 2014-04-08 16:30 187人阅读 评论(0) 收藏 举报 目录(?)[+] 1.AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by Gary on 12-11-24. // Copyright (c) 2012年 BOX.

iOS——常用加密方式

iOS代码加密常用加密方式,常见的iOS代码加密算法包括MD5加密.AES加密.BASE64加密. 三大算法iOS代码加密是如何进行加密的: /////////////////////////////////////////////////////////////////// MD5 iOS代码加密使用方法 /////////////////////////////////////////////////////////////////// //创建MD5类,代码如下 #import <Foun

iOS代码加密的几种方式

众所周知的是大部分iOS代码一般不会做加密加固,因为iOS APP一般是通过AppStore发布的,而且苹果的系统难以攻破,所以在iOS里做代码加固一般是一件出力不讨好的事情.万事皆有例外,不管iOS.adr还是js,加密的目的是为了代码的安全性,虽然现在开源畅行,但是不管个人开发者还是大厂皆有保护代码安全的需求,所以iOS代码加固有了生存的土壤.下面简单介绍下iOS代码加密的几种方式. iOS代码加密的几种方式 1.字符串加密 字符串会暴露APP的很多关键信息,攻击者可以根据从界面获取的字符串

iOS常用加密方式

示例项目下载地址  https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSString *)md5HexDigest:(NSString *)input; @end #import "CJMD5.h" #import <CommonCrypto/CommonDigest.h> @imp

iOS常用加密方法(aes、md5、base64)

1.代码 iOS常用加密方法(aes.md5.base64) 1.AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 敏 on 12-11-24. // Copyright (c) 2012年 BOX. All rights reserved. // #import <Foundation/Foundation.h> @class NSString; @interface NSData (Encryption)

iOS开发 - 网络数据安全加密(MD5)

提交用户的隐私数据 一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登录密码银行账号- - 数据安全 仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 常见的加密算法 <code class="hljs tex&q

iOS之那几种加密 MD5加密.

前言: 好好活着,因为我们会死很久.---海腾 iOS之那几种加密 MD5加密.  接下来我们看代码 NSString+MD5.h   // // NSString+MD5.h // UI21_MD5加密 // // Created by JR_Rafael on 16/1/11. // Copyright © 2016年 lanou3g. All rights reserved. // #import <Foundation/Foundation.h> @interface NSString

iOS POS之3DES加密

最近在做支付类APP,遇到了很多以前没遇到过的东西.接下来我会用这系列文章来记录我所遇到的问题. 首先就是在组8583报文时用到的3DES加密.8583报文是以字节为单位的所以可能3DES加密会有稍许不同. 我自己搞这个问题也搞了两天,最后还是拜托一个高手给搞定的. 我在网上也搜了很多资料最后发现有一帖子很接近答案.链接如下: http://www.cocoachina.com/bbs/read.php?tid=245410 请教高手所做的就是把哈希那句给去掉然后稍微做下处理,有兴趣的同学可以自