几维安全介绍iOS应用加密常用算法和代码实践
来源:互联网 发布:社交网络有哪些 编辑:程序博客网 时间:2024/06/07 05:41
iOS系统库中定义了软件开发中常用的加解密算法,接口为C语言形式。具体包括了以下几个大类:
其中第一类常用加解密算法就包含了AES,DES,和已经废弃的RC4,第二类摘要算法,包括如MD5,SHA等。本文主要介绍AES,MD5,SHA三种最常用算法的实现。
1 对称密码算法--AES
AES主要应用在关键数据和文件的的保密同时又需要解密的情形,其加密密钥和解密密钥相同,根据密钥长度分为128、192和256三种级别,密钥长度越大安全性也就越大,但性能也就越低,根据实际业务的安全要求来决定就好。通常情况,对一些关键数据进行加密的对象都是字符串,加密结果也以字符串进行保存,所以在设计接口的时候参数和返回值均为字符串。
1.1 加密过程
1.2解密过程
1.2 接口调用示例
1.3 关键参数的意义
要熟练掌握AES算法的使用,必须要了解其几种工作模式、初始化向量、填充模式等概念,通常情况还需要多平台保持一致的加解密结果,使用时务必多做确认。(可以使用在线网站加解密进行自我验证。)
kCCKeySizeAES256
密钥长度,枚举类型,还有128,192两种。
kCCBlockSizeAES128
块长度,固定值 16(字节,128位),由AES算法内部加密细节决定,不过哪种方式、模式,均为此。
kCCAlgorithmAES
算法名称,不区分是128、192还是258。kCCAlgorithmAES128只是历史原因,与kCCAlgorithmAES值相同。
kCCOptionPKCS7Padding
填充模式,AES算法内部加密细节决定AES的明文必须为64位的整数倍,如果位数不足,则需要补齐。kCCOptionPKCS7Padding表示,缺几位就补几个几。比如缺少3位,则在明文后补3个3。iOS种只有这一种补齐方式,其它平台方式更多,如kCCOptionPKCS5Padding,kCCOptionZeroPadding。如果要实现一致性,则此处其它平台也要使用kCCOptionPKCS7Padding。
kCCOptionECBMode
工作模式,电子密码本模式。此模式不需要初始化向量。iOS种只有两种方式,默认是CBC模式,即块加密模式。标准的AES除此外还有其它如CTR,CFB等方式。kCCOptionECBMode模式下多平台的要求不高,推荐使用。CBC模式,要求提供相同的初始化向量,多个平台都要保持一致,工作量加大,安全性更高,适合更高要求的场景使用。
base64
一种unicode到asci码的映射,由于明文和密文标准加密前后都可能是汉字或者特殊字符,故为了直观的显示,通常会对明文和密文进行base64编码。
1.4、iOS应用加密
iOS应用加密还有第三方提供这样的服务,提供代码混淆和字符串加密等功能,如果有需要的朋友可以使用一下,常用一些移动安全服务平台如下:
几维安全(http://www.kiwisec.com/)
2 摘要算法
摘要算法,具有单向不可逆的基本性质,速度快。
2.1 消息摘要算法MD5
MD5算法将任意明文(不为空)映射位32位字符串。数字签名和复杂的加密系统中都有使用,单独使用由于撞库原因安全性较低。
这里将结果以16进制字符串形式保存,也可以进行base64等其它处理。
2.2 安全散列算法SHA
SHA按结果的位数分为256、484、512三种基本方式,根据对结果的要求而选择即可。通过CC_SHA256_DIGEST_LENGTH等枚举类型进行设置。
- 几维安全介绍iOS应用加密常用算法和代码实践
- iOS常用加密算法介绍和代码实践
- iOS开发常用的加密方式介绍和使用
- iOS代码加密常用加密方式
- iOS代码加密常用加密方式
- iOS安全——常用加密
- iOS 中常用的几种加密
- iOS代码加密的几种方式
- 总结几种常用的安全算法
- 代码实践几种常见算法
- linux,简单介绍加密解密算法,和如何给自己发放安全证书
- 几维安全最新APP加密神器,国内首款全平台移动代码虚拟机KiwiVM即将发布
- WCF分布式安全开发实践(0):文章和代码结构规划介绍
- 常用加密与解密算法示例代码
- 几维安全免费apk加密服务升级,高强度保护应用源代码避免盗版应用产生
- 安全算法(二)对称加密和非对称加密
- 几种常用的加密方式简单介绍
- iOS应用安全风险及加密解决措施
- Java爬虫--利用HttpClient和Jsoup爬取博客数据并存入数据库
- SVN(TortoiseSVN)提交时忽略bin和obj目录
- webview加载html时使用assets文件夹下的css或者js文件
- Logging相关源码分析
- Spring源码阅读-- IOC容器资源定位
- 几维安全介绍iOS应用加密常用算法和代码实践
- 简单线程池的实现--JAVA/Python
- Android中WebView使用6,js调java实现播放视频
- 对于原码、反码、补码的理解
- ARM Linux 设备树(1)
- java list<泛型> 一行代码实现去重方式总结
- 感觉刚学会MVC-老生再谈一谈
- JS收藏——DOMReady
- 开源新项目GitTest.com,欢迎大牛,小牛,菜鸟,同学加入发PR