iOS开发中的一些加密方式

一.对称加密

  • 对称加密算法又称传统加密算法,加密和解密使用同一个密钥。
  • 加密解密过程:明文->密钥加密->密文,密文->密钥解密->明文。
  • 优缺点: 算法公开,计算量小,加密速度快,加密效率高 ;双方使用相同的钥匙,安全性得不到保证。
  • 注意事项: 密钥的保密工作非常重要 ,密钥要求定期更换。
  • 常见的对称加密有:
  1. DES(Data Encryption Standard):数据加密标准(现在用的比较少,因为它的加密强度不够,能够暴力破解)
  2. 3DES:原理和DES几乎是一样的,只是使用3个密钥,对相同的数据执行三次加密,增强加密强度。(缺点:要维护3个密钥,大大增加了维护成本)
  3. AES(Advanced Encryption Standard):高级加密标准,目前美国国家安全局使用的,苹果的钥匙串访问采用的就AES加密。是现在公认的最安全的加密方式,是对称密钥加密中最流行的算法。

二.非对称加密

  • 非对称加密算法又称现代加密算法; 非对称加密是计算机通信安全的基石,保证了加密数据不会被破解;非对称加密算法需要两个密钥,公开密钥(publickey) 和私有密(privatekey) ;公开密钥和私有密钥是一对。
  • 加密解密过程:公钥加密,私钥解密;或者私钥数字签名,公钥验证。公钥和私钥是成对的,它们互相解密。
  • 特点: 算法强度复杂,安全性依赖于算法与密钥,加密解密速度慢。
  • 常见的非对称加密RSA加密:RSA 公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够 抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对 其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

三.哈希算法加密

  • 上面对称加密和非对称加密都是可逆的,即加密后都能够再解密。哈希算法加密是通过哈希算法对数据加密,加密后的结果不可逆,及加密后不能在解密。
  • 特点:不可逆、算法公开、对于相同的数据加密,得到的结果是一样的、对于不同的数据,得到的结果可能是一样的。
  • 长见的哈希算法加密
    1. MD5加密:对不同的数据加密的结果是定长的32位字符(不管文件多大都一样)、抗修改性 : 信息“指纹”,对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别、弱抗碰撞 : 已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的、强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的,主要用于密码加密MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,就像每个人都有自己独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹,但并不绝对安全(以为算法公开)。可以通过加盐的方式l来加强加密的复杂度,这么一来破解起来就更加麻烦,当然这个“盐”越长越复杂,加密后破解起来就越麻烦。如果被泄露出去,依然有被破解的可能,没有百分百的安全,只能达到相对安全(破解成本 > 破解利润),所以一些金融的app、网站等加密比较高。
    2. .SHA加密:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当让除了SHA1还有SHA256以及SHA512等。
    3. HMAC加密:给定一个密钥,对明文加密,做两次“散列”,得到的结果还是32为字符串。在实际开发中,密钥是服务器生成,客户端发送请求会拿到KEY。一个账号对应一个KEY。当用户把账号提交给服务器,服务器会验证账号的合法性,如果合法就会生成个KEY给客户端(这个KEY只有在注册的时候会出现一次,一个账号只对应一个KEY);客户端会用拿到的KEY给密码用HMAC方式加密(32位字符串)发给服务器,最终服务器会保存这个HMAC密码。这样就注册成功了!以后再登录就会服务器就会比对这个HMAC密码是否相等决定能否登录成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iOS开发可以使用AVPlayer来播放加密的m3u8视频。首先,需要获取加密m3u8视频的URL地址。然后,可以使用AVAsset来创建一个播放资源对象,通过指定URL地址初始化AVURLAsset对象,如下所示: ``` NSURL *url = [NSURL URLWithString:@"加密m3u8视频的URL地址"]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; ``` 接下来,可以创建一个AVPlayerItem对象,将asset设置为其参数,用于加载加密m3u8视频资源。同时,需要为AVAsset设置相应的解密密钥,以解密加密的m3u8视频,代码如下: ``` // 创建AVPlayerItem对象 AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; // 设置解密密钥,以解密加密m3u8视频 NSData *keyData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"密钥URL地址"]]; NSDictionary *encryptionInfo = @{AVAssetResourceLoadingRequestStreamingContentKeyRequestRequiresPersistentKey: @NO, AVAssetResourceLoadingRequestStreamingContentKeyRequestRequiresExternalization: @NO, AVAssetResourceLoadingRequestStreamingContentKeyRequestInitializationData: keyData}; [playerItem setExternalProtectionStatusDelegate:self queue:dispatch_get_main_queue()]; [playerItem setResourceLoaderDelegate:self queue:dispatch_get_main_queue()]; [playerItem setInitializationData: @[encryptionInfo] forAsset:asset]; ``` 最后,可以使用AVPlayer来播放加密的m3u8视频,代码如下: ``` AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; playerLayer.frame = self.view.bounds; [self.view.layer addSublayer:playerLayer]; [player play]; ``` 通过以上步骤,就可以在iOS开发通过AVPlayer来播放加密的m3u8视频。同时,还需要实现相关的代理方法来处理密钥请求和解密操作,以确保视频播放正常。 ### 回答2: iOS开发,播放加密m3u8需要进行以下步骤。 首先,我们需要获取加密m3u8文件的url地址,并进行网络请求,获取到m3u8文件的内容。可以使用NSURLConnection或者NSURLSession来进行网络请求。 接下来,我们需要解析m3u8文件的内容,找到其加密信息。一般来说,加密信息是包含在EXT-X-KEY标签的。可以使用正则表达式或者解析库来提取加密信息。 获取到加密信息之后,我们需要下载加密的密钥(key文件)。可以使用NSURLSession来进行密钥的网络请求,并将密钥保存到本地。 接着,我们需要将下载的加密的密钥设置到AVAssetResourceLoaderDelegate的代理方法。通过实现AVAssetResourceLoaderDelegate的方法,我们可以对资源的请求进行拦截,并替换成解密后的数据。在这个方法,我们需要解密每个ts文件的内容,然后将解密后的数据返回给播放器进行播放。 最后,我们将解密后的数据传递给AVPlayer,用AVPlayer来进行播放。我们可以使用AVPlayerItem和AVPlayer来创建一个播放器,然后将解密后的数据设置给AVPlayerItem,最后将AVPlayerItem设置给AVPlayer。 综上所述,播放加密m3u8文件需要进行加密信息解析、密钥下载和解密处理等步骤。通过以上步骤,我们可以在iOS开发实现播放加密m3u8文件的功能。 ### 回答3: iOS开发要播放加密的m3u8文件,可以借助AVFoundation框架来实现。以下是一个简单的实现步骤: 首先,需要将m3u8文件下载到本地,并解析得到m3u8文件的密钥以及ts片段的URL。 然后,借助AVAssetResourceLoaderDelegate协议,自定义一个资源加载器,用于处理加密文件的逻辑。在该协议的代理方法,先判断是否需要加载加密密钥,并根据m3u8文件的密钥信息,将其加载到AVAssetResourceLoader。 接下来,当AVPlayer需要加载排队的媒体数据时,资源加载器会被调用。在这个代理方法,我们需要处理对ts片段的加载请求,通过AVAssetResourceLoadingDataRequest的requestRange属性可以得到要加载的范围,然后根据范围从本地缓存读取对应的加密ts片段数据进行解密,再通过AVAssetResourceLoadingDataRequest的respond方法回传给AVPlayer。 最后,将AVPlayer与AVPlayerLayer绑定,通过AVPlayer的play方法来开始播放加密的m3u8文件。 需要注意的是,由于涉及到解密操作,所以在自定义资源加载器,我们需要实现对ts片段数据的解密逻辑,通常使用AES等加密算法进行解密。 综上所述,通过借助AVFoundation框架的AVAssetResourceLoaderDelegate协议和自定义资源加载器,我们可以实现在iOS开发播放加密的m3u8文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值