iOS数据加密

基本术语:
密钥:密钥是一种参数,它是在明文转换为密文或者密文转换为明文的算法中使用的参数。密钥分为对称密钥与非对称密钥(或者根据用途分为加密密钥和解密密钥)
明文:没有加密的数据,能够直接代表原文信息的数据
密文:经过加密算法加密后的明文,不能够直接读取数据的信息
加密:将明文转换为密文的过程
解密:将密文转换为明文的过程
对称加密算法:是指传统的加密算法,加密密钥可以从解密密钥中推算出来,大多数的对称算法的加密密钥和解密密钥相同
非对称加密算法:需要两个密钥:公钥和私钥,公钥用来加密明文,私钥用来解密密文

在iOS开发中,常用的加密算法是MD5
哈希算法:将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。MD5属于哈希算法加密。
MD5(Message Digest Algorithm 5):消息摘要算法第5版,是计算机安全领域广泛使用的一种散列函数,用于提供消息的完整性保护。

MD5算法有以下优点:
1.压缩性:任意长度的数据,经过MD5算法加密后的长度都是固定的(16进制的32位)
2.容易计算:从原数据计算出MD5值很容易
3.抗修改性:对原数据简单的修改就会导致加密后的数据有很大不同
4.抗碰撞性:要找到两个MD5值相同的数据是非常困难的

iOS开发需要用到的头文件:
<CommonCrypto/CommonCrypto>

MD5只能对NSString和NSData数据进行加密。


公钥加密:
公钥加密也称为非对称加密,常用算法有RSA、EIGamal、背包算法、Rabin等等,iOS中用得最多的是RSA,只需要公钥。
公钥加密,私钥解密
    NSString *publicKey = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEChqe80lJLTTkJD3X3Lyd7Fj+\nzuOhDZkjuLNPog3YR20e5JcrdqI9IFzNbACY/GQVhbnbvBqYgyql8DfPCGXpn0+X\nNSxELIUw9Vh32QuhGNr3/TBpechrVeVpFPLwyaYNEk1CawgHCeQqf5uaqiaoBDOT\nqeox88Lc1ld7MsfggQIDAQAB" ;
   
// 私钥证书描述信息 ( 解密用 )
    NSString *privateKey = @"MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQKGp7zSUktNOQk\nPdfcvJ3sWP7O46ENmSO4s0+iDdhHbR7klyt2oj0gXM1sAJj8ZBWFudu8GpiDKqXw\nN88IZemfT5c1LEQshTD1WHfZC6EY2vf9MGl5yGtV5WkU8vDJpg0STUJrCAcJ5Cp/\nm5qqJqgEM5Op6jHzwtzWV3syx+CBAgMBAAECgYEApSzqPzE3d3uqi+tpXB71oY5J\ncfB55PIjLPDrzFX7mlacP6JVKN7dVemVp9OvMTe/UE8LSXRVaFlkLsqXC07FJjhu\nwFXHPdnUf5sanLLdnzt3Mc8vMgUamGJl+er0wdzxM1kPTh0Tmq+DSlu5TlopAHd5\nIqF3DYiORIen3xIwp0ECQQDj6GFaXWzWAu5oUq6j1msTRV3mRZnx8Amxt1ssYM0+\nJLf6QYmpkGFqiQOhHkMgVUwRFqJC8A9EVR1eqabcBXbpAkEA3DQfLVr94vsIWL6+\nVrFcPJW9Xk28CNY6Xnvkin815o2Q0JUHIIIod1eVKCiYDUzZAYAsW0gefJ49sJ4Y\niRJN2QJAKuxeQX2s/NWKfz1rRNIiUnvTBoZ/SvCxcrYcxsvoe9bAi7KCMdxObJkn\nhNXFQLav39wKbV73ESCSqnx7P58L2QJABmhR2+0A5EDvvj1WpokkqPKmfv7+ELfD\nHQq33LvU4q+N3jPn8C85ZDedNHzx57kru1pyb/mKQZANNX10M1DgCQJBAMKn0lEx\nQH2GrkjeWgGVpPZkp0YC+ztNjaUMJmY5g0INUlDgqTWFNftxe8ROvt7JtUvlgtKC\nXdXQrKaEnpebeUQ=";

钥匙串(Keychain):是苹果公司Mac OS中的密码管理系统,它在Mac OS8.6和 iOS 7之后被导入,并且包含在后续的各个版本中。一个钥匙串可以包含多种类型的数据:密码,FTP服务器,SSH账号,网络共享,无线网络,群组软件,加密磁盘镜像等,私钥,电子证书和加密笔记等。

KVO(Key-Value-Observer):键值观察者,是观察者设计模式的一种具体实现
KVO触发机制:一个对象(观察者),监测另一个对象(被观察者)的属性是否发生变化,若被监测的对象发生变化,会触发观察者的一个方法(方法名固定,类似代理方法)
使用步骤:
1.注册观察者(为被观察者指定观察者及被观察属性)
2.实现回调方法
3.触发回调方法(被观察者属性发生改变)
4.移除观察者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值