iOS 之加密方式

iOS 中的加密方式

1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie

2 各加密方式的比较

2.1 Base64

2.1.1 基本原理:采用64个基本的 ASCII 值对数据进行重新编码.

2.1.2 实现步骤

> 将需要编码的数据拆分成字节数组

> 以3个字节为一组

> 按顺序排列24位数据,再将这24位数据均分为4组.

> 再在每组的最高位前补2个0,称为一个字节.

> 在最后一个字节不足的时候末尾填0

> 在最后编码完成的时候末尾添加1到2个=号

注:Base64的字符包括大/小写a—z,0—9,以及+/

Base64加密后还可以进行解密

2.2 MD5(数字签名)

2.2.1 原理:将任意长度是字节串转化为特定长度的长整数.

注:转换是将字节串转换而不是字符串转换.

谨记:MD5加密是不可解密的,因此用 MD5加密的程序进行密码验证的时候,只是验证加密之后的字符串比较,而不知道用户的密码.

2.2.2 使用

> 使用步骤很简单,但是单纯的 MD5加密是不安全的,常用一下方法

>  MD5加盐:所谓的盐值就是一个字符串.即将用户的密码和盐值拼接之后再加密.

> 时间戳/动态密码:即在进行 MD5加密的时候讲时间和密码结合之后再加密,故可以做到相同的加密方式,形同的密码等加密之后的值是不同的

注:时间戳/动态密码加密要求客户端和服务器端的时间要相同.

> 时间戳/动态密码加密的实现步骤:首先,第一次用 hmac MD5加密.其次,将加密后的值和当前时间的字符串进行拼接.最后,将拼接后的值再次用 hmac MD5进行加密.

服务器端接收到密码之后要计算当前时间和上一分钟的值和密码进行比较

2.3 DES

2.3.1 原理:它是一种分组加密算法,它是以64位为分组对数据进行加密.同时 DES 也是一种对称加密算法(加密和解密用同一算法).它的密钥长度是56位(每一个第8位用作奇偶校验),密钥可以是任意的56位的数,而且可以任意的改变.

补充:

DES对64(bit)位的明文分组M进行操作,M经过一个初始置换IP置换成m0,将m0明文分成左半部分和右半部分 m0=(L0,R0),各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。经过16轮后,左,右半部分合在 一起经过一个末置换,这样就完成了。在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过 一个异或操作替代成新的32位数据,在将其置换换一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的 右半部分,原来的右半部分成为新的左半部分。将该操作重复16次,就实现了。

解密过程:在经过所有的代替、置换、异或盒循环之后,你也许认为解密算法与加密算法完全不同。恰恰相反,经过精心选择的 各种操作,获得了一个非常有用的性质:加密和解密使用相同的算法。DES加密和解密唯一的不同是密匙的次序相反。如果各轮加密密匙分别是 K1,K2,K3….K16那么解密密匙就是K16,K15,K14…K1

2.4 钥匙串存储(SSKeychain 第三方框架)

2.4.1 使用原理:可以在钥匙串中直接写入明文密码.

注:要给写入的密码一个标示符,以便于取出密码.

2.5 Cookie

2.5.1 是一个网络信息块,用来存储信息

2.5.2 Cookie 会自动登录,会将用户的数据自动发给服务器.

注: Cookie 中的信息保存在NSHTTPCookieStorage中.

2.6 AES

2.6.1 原理:是一个对称加密算法.加长了 DES 加密的长度. AES设计有三个密钥长度:128,192,256位三种. AES算法主要包括三个方面:轮变化、圈数和密钥扩展.

具体原理: http://blog.sina.com.cn/s/blog_4b957026010006kf.html

2.6.2 首先获取要加密的字符串

其次加密(AESCrypt类中)

2.7 RSA

2.7.1 原理:它是一种非对称加密方法,需要两个秘钥公钥和私钥.公钥和私钥是一对,如果用公钥进行加密,就只能用私钥进行解密,如果用私钥进行加密,那么久只能用公钥进行解密.

工作流程:接收方获取一对密钥,让后将其中一个密钥发送给发送方,发送方用接收方发过来的密钥进行加密之后,再讲密码发给接收方,由于其中一个密钥只能由另外一个密钥进行解密,而另外一个密钥在接收方手中并没有在网络中发送,故可以保证很安全.

2.7.2 获取公钥和私钥的步骤:

> 找出两个很大的质数:A 和B

> C = A*B

> D = (A-1)*(B-1)

> 找出整数 E,E 与 D 互质.

> 找出整数 F,使得 E*F/D 余数为1

> 计算后得 E 是公钥, F 是私钥.

> N 负责公钥和私钥之间的联系,其公式如下(对 X 进行加密)

加密:(X^E)%N = Y

解密:(Y^E)%N = X

飞机票:http://www.cnblogs.com/xuan-yuan/p/5557939.html

时间: 2024-10-07 05:07:25

iOS 之加密方式的相关文章

iOS——常用加密方式

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

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 RSA 加密方式

采用RSA加密方式,主要是生成公钥和私钥,公钥用来加密,私钥用来解密,至于其中如何实现的,网上有很多原理. 参见如下: https://github.com/jslim89/RSA-objc PS: 生成私钥 $ openssl genrsa -out private_key.pem 512 生成公钥 $ openssl rsa -in private_key.pem -pubout -out publi

iOS代码加密的几种方式

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

iOS代码加密常用加密方式

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

iOS开发,让数据更安全的几个加密方式

任何应用的开发中安全都是重中之重,在信息交互异常活跃的现在,信息加密技术显得尤为重要.在app应用开发中,我们需要对应用中的多项数据进行加密处理,从而来保证应用上线后的安全性,给用户一个安全保障.这篇文章就介绍在iOS开发中最常用的数据加密方式. 文中证书锁定内容部分参考了博客http://blog.csdn.net/dd864140130/article/details/52625666. iOS中数据加密的几方式 1.使用数字证书锁定来保证不被中间人拦截,将服务器返回的数据和我的当地证书进行

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

演示样例项目下载地址  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> @i

iOS 中的加密方式

1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ASCII 值对数据进行重新编码. 2.1.2 实现步骤 > 将需要编码的数据拆分成字节数组 > 以3个字节为一组 > 按顺序排列24位数据,再将这24位数据均分为4组. > 再在每组的最高位前补2个0,称为一个字节. > 在最后一个字节不足的时候末尾填0 > 在最后编码完成的时候末尾添加1到2

iOS开发中常用到的加密方式

1 base64 1.1 简介 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据分成4组,即每组6位.再在每组的的最高位前补两个0凑足一个字节.这样就把一个3字节为一组的数据重新编码成了4个字节.当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节.这时在最后一组填充1到2个0字节.并在最后编码完成后在结尾添加1到2个"=".例:将对ABC进行