美文网首页
iOS数据加密方式

iOS数据加密方式

作者: _源计划 | 来源:发表于2016-01-25 16:35 被阅读1159次

    一、MD5

    MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”,MD5编码是最常用的编码方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码(MD5破解网站:http://www.cmd5.com)。

    MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。

    MD5算法还具有以下性质:

    1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

    2、容易计算:从原数据计算出MD5值很容易。

    3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

    4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

    5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

    6、MD5改进:现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度

    加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5

    先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序

    总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文

    7、MD5加密方式

    (1).先将foundation框架导入

    (2).将头文件导入

    (3).具体实现方法

    具体方法

    二、RSA加密

    RSA非对称加密算法

    非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(PRivatekey)

    公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

    特点:

    非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

    对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了

    基本加密原理:

    (1)找出两个“很大”的质数:P & Q

    (2)N = P * Q

    (3)M = (P – 1) * (Q – 1)

    (4)找出整数E,E与M互质,即除了1之外,没有其他公约数

    (5)找出整数D,使得E*D除以M余1,即 (E * D) % M = 1

    经过上述准备工作之后,可以得到:

    E是公钥,负责加密

    D是私钥,负责解密

    N负责公钥和私钥之间的联系

    加密算法,假定对X进行加密

    (X ^ E) % N = Y

    n根据费尔马小定义,根据以下公式可以完成解密操作

    (Y ^ D) % N = X

    但是RSA加密算法效率较差,对大型数据加密时间很长,一般用于小数据。

    常用场景:

    分部要给总部发一段报文,先对报文整个进行MD5得到一个报文摘要,再对这个报文摘要用公钥加密。然后把报文和这个RSA密文一起发过去。

    总部接收到报文之后要先确定报文是否在中途被人篡改,就先把这个密文用私钥解密得到报文摘要,再和整个报文MD5一下得到的报文摘要进行对比 如果一样就是没被改过。

    三、对称加密算法

    优点:算法公开、计算量小、加密速度快、加密效率高、可逆

    缺点:双方使用相同钥匙,安全性得不到保证

    现状:对称加密的速度比公钥加密快很多,在很多场合都需要对称加密,

    相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准

    nECB :电子代码本,就是说每个块都是独立加密的

    nCBC :密码块链,使用一个密钥和一个初始化向量 (IV)对数据执行加密转换

    ECB和CBC区别:CBC更加复杂更加安全,里面加入了8位的向量(8个0的话结果等于ECB)。在明文里面改一个字母,ECB密文对应的那一行会改变,CBC密文从那一行往后都会改变。

    ECB终端命令:

    $ openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin

    CBC终端命令:

    $ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.txt -out msg2.bin

    相关文章

      网友评论

          本文标题:iOS数据加密方式

          本文链接:https://www.haomeiwen.com/subject/bjfdkttx.html