博客> ios 关于RSA 、3DES、AES 、MD5加密解密问题的探讨
ios 关于RSA 、3DES、AES 、MD5加密解密问题的探讨
2019-11-16 17:23 评论:0 阅读:684 feng_zi
MD5 AES RSA 3DES DES

之前因为项目需求,做了一些加密,现在时间空闲下来,做个小结。 简要说明一下这几种加密方式和注释的事项,具体代码还没整理好,有需要可以发邮件给我我单独发给你 邮箱:644248180@qq.com:

RSA: 原理 看一下这个网址的转载:http://www.jianshu.com/p/1b43dfc8b783 当然知道它是非对称加密的就行了,或者看一下下面的文字大概了解一下。 RSA非对称加密算法 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密 特点:非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥,但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快,对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了 基本加密原理: (1)找出两个“很大”的质数:P & Q (2)N = P Q (3)M = (P – 1) (Q – 1) (4)找出整数E,E与M互质,即除了1之外,没有其他公约数 (5)找出整数D,使得ED除以M余1,即 (E D) % M = 1

经过上述准备工作之后,可以得到:E是公钥,负责加密D是私钥,负责解密N负责公钥和私钥之间的联系加密算法,假定对X进行加密(X ^ E) % N = Yn根据费尔马小定义,根据以下公式可以完成解密操作(Y ^ D) % N = X 但是RSA加密算法效率较差,对大型数据加密时间很长,一般用于小数据。常用场景:分部要给总部发一段报文,先对报文整个进行MD5得到一个报文摘要,再对这个报文摘要用公钥加密。然后把报文和这个RSA密文一起发过去。总部接收到报文之后要先确定报文是否在中途被人篡改,就先把这个密文用私钥解密得到报文摘要,再和整个报文MD5一下得到的报文摘要进行对比 如果一样就是没被改过。

下面说明一下对文件的提取工作,一般是给你提供.crt文件,自己把 他转成自己需要的文件即可,这个一般客户端是 公钥加密 私钥解密 ,公钥文件是.der 私钥文件是.p12文件,或者直接在代码中写死,以字符串的形式进行加密,解密 这个是加密解密.crt 文件的操作:http://blog.csdn.net/qq_30513483/article/details/51242338

AES :AES是开发中常用的加密算法之一。然而由于前后端开发使用的语言不统一,导致经常出现前端加密而后端不能解密的情况出现。然而无论什么语言系统,AES的算法总是相同的, 因此导致结果不一致的原因在于 加密设置的参数不一致 。于是先来看看在两个平台使用AES加密时需要统一的几个参数。

密钥长度(Key Size)

加密模式(Cipher Mode)

填充方式(Padding)

初始向量(Initialization Vector) 密钥长度

AES算法下,key的长度有三种:128、192和256 bits。由于历史原因,JDK默认只支持不大于128 bits的密钥,而128 bits的key已能够满足商用安全需求。因此本例先使用AES-128。(Java使用大于128 bits的key方法在文末提及)

加密模式

AES属于块加密(Block Cipher),块加密中有CBC、ECB、CTR、OFB、CFB等几种工作模式。本例统一使用CBC模式。

填充方式

由于块加密只能对特定长度的数据块进行加密,因此CBC、ECB模式需要在最后一数据块加密前进行数据填充。(CFB,OFB和CTR模式由于与key进行加密操作的是上一块加密后的密文,因此不需要对最后一段明文进行填充)

在iOS SDK中提供了PKCS7Padding,而JDK则提供了PKCS5Padding。原则上PKCS5Padding限制了填充的Block Size为8 bytes,而Java实际上当块大于该值时,其PKCS5Padding与PKCS7Padding是相等的:每需要填充χ个字节,填充的值就是χ。 初始向量

使用除ECB以外的其他加密模式均需要传入一个初始向量,其大小与Block Size相等(AES的Block Size为128 bits),而两个平台的API文档均指明当不传入初始向量时,系统将默认使用一个全0的初始向量。

DES:为对称性加密解密,3DES加密提高了其使用的安全性,这个只需要注意加密解密对应的参数 即可 MD5:这个大家都比较熟悉。也就不再多说了。

收藏
0
sina weixin mail 回到顶部