[iOS]加密解密算法

关于iOS加密解密,系统有提供一套C接口的API,在CommonCrypto中。具体从哪个版本开始有的我不清楚,但是iOS5.0中已经有了。

本文简单的归纳了一下iOS使用的各种加密解密算法(因为比较简单,所以本文不涉及具体的代码实现。未提及RSA加密算法的相关信息)。

对数据加密后进行保存/传输用得较多的是AES和DES,都是对称加密,相对来说AES速度块,安全性高。3DES使用三个密钥,虽然安全性得到大幅度提高,但是加密速度明显慢了,目前广泛使用的是3DES和AES。


有一个不错的开源项目 GNUPG ,实现了很多加密算法,包括 AES. (http://www.gnupg.org)


(注意:DES的密钥只能是8个字节(64位)的。加密有ECB模式和CBC模式,默认是CBC加密模式,ECB模式和CBC模式的加密结果是不一样的。还要注意填充模式。)


下面是iOSAPI支持的几种加密算法(内容参考:http://www.cksis.com/blog/2685-changyongjiamisuanfa.html):


1.MD5 (CC_MD5)

MD5只能用于加密,不能解密。一般用于密码匹配之类的,就是不需要知道明文,只对密文进行匹配来判断是否合法。

有的时候为了安全会进行2次MD5。

引用“MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。”


2.SHA1(CC_SHA1)

通常所说散列,跟MD5类似也是不能解密的。强度比MD5,速度比MD5慢。

百度百科:“安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。”



3.Base64 (NSData <==> NSString)

网上很多加密解密的文章都提到了Base64,其实个人认为Base64不是什么加密解密算法,只能说是一种文本编码格式,编码后的文本不具备可读性。是网络上最常见的用于传输8bit字节代码的编码方式之一。所以安全性相对教低,NSData可直接转换成Base64编码的NSString,使用起来很方便。

引用“Base64加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在JAVAPERSISTENCE系统HIBEMATE中,采用了Base64来将一个较长的唯一标识符编码为一个字符串,用作HTTP表单和HTTPGETURL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。”


4.AES (CC_Crypt)

关于加密模式:http://blog.csdn.net/aaaaatiger/article/details/2525561

引用“AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

AES加密算法被设计为支持128/192/256位(/32=nb)数据块大小(即分组长度);支持128/192/256位(/32=nk)密码长度,,在10进制里,对应34×1038、62×1057、1.1×1077个密钥。”



5.DES (CC_Crypt)

引用“DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为256。

随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过,DES现在仅用于旧系统的鉴定,而更多地选择新的加密标准。”


6.RC4 (CC_Crypt)

百度百科:“RC4加密算法是大名鼎鼎的RSA三人组中的头号人物RonaldRivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。RC4起初是用于保护商业机密的。但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了。RC4也被叫做ARC4(AllegedRC4——所谓的RC4),因为RSA从来就没有正式发布过这个算法。”


7.RC2 (CC_Crypt)

百度百科:“RC2是由著名密码学家RonRivest设计的一种传统对称分组加密算法,它可作为DES算法的建议替代算法。它的输入和输出都是64比特。密钥的长度是从1字节到128字节可变,但目前的实现是8字节(1998年)。

此算法被设计为可容易地在16位的微处理器上实现。在一个IBMAT机上,RC2加密算法的执行可比DES算法快两倍(假设进行密钥扩展)。具体的加解密算法见参考资料。”


8.Blowfish (CC_Crypt)

这个加密算法没用过,也没了解过。

http://www.51cto.com/art/200512/13490.htm

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值