锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
iOS一些常用的加密介绍

作者: 佚名  日期:2017-04-17 14:09:46   来源: 本站整理

 在iOS开发中(应该说在所有的开发中),数据的安全性都是非常重要的。下面就简单的说一下数据加密的一些方式。

MD2 、MD3、 MD4 、MD5 (MD6) Message-Digest Algorithm(信息-摘要算法),现在主要是MD5,前面的由于存在缺陷就被淘汰啦,而MD6的话现在还处于测试阶段。 具体的算法的更深层次的介绍请移步Google。

SHA1 、SHA224 、SHA256 、SHA384 、SHA512 安全哈希算法 (安全散列算法)(Secure Hash Algorithm),散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。 查看更多介绍

HmacMD5 、HmacSHA1 、HmacSHA224 、HmacSHA256 、HmacSHA384 、HmacSHA512 这些加密算法和上边的相比较的话,区别就在于这些需要一个秘钥去和消息输入,生成消息摘要作为输出。这些加密用在服务器验证客户端非常合适:

客户端发送请求之后,服务器收到返回一个随机数,同时在会话中保存该随机数,客户端将信息和返回的随机数用这些算法签名发送给服务器,服务器用刚才记录的随机数和去数据库读取相应信息(如用户名密码)采用同样的散列算法加密和客户端传过来的签名信息对比,从而验证客户端是否合法(被拦截篡改等)。 更多介绍

RSA 公钥加密算法,加密方使用公钥加密,解密方持有私钥解密,公钥和私钥是唯一匹配的,但是有公钥是无法计算出私钥的。该加密算法可以公开加密算法和公钥。用在服务器验证客户端也是非常的nice。

上面的加密算法除了 RSA都是不可逆加密,再看一下下面的可逆加密算法:

DES 、3DES 、AES 、RC2、RC4、RC2、CAST、Blowfish。通过秘钥和初始化向量采用一直加密模式进行加密。加密模式如下几种:

ECB模式,相对简单,易于实现,相同的明文产生相同密文,所以安全性相对没那么高,该模式下初始化向量会被忽略。 CBC模式,需要初始化向量,误差会传递,安全性高于ECB模式。 CFB模式,需要初始化向量,隐藏了明文模式,容易造成错误传播,加密的速率有所降低。 OFB模式,不利于并行化处理,克服了误差传递的问题。 更多模式详细信息

以上算法在iOS中的实现

好在上面的算法Apple都是为我们实现了,我们只需要调用相应的接口即可。在这里我们自己写了一个接口,对加密算法进行一点封装,更利于项目中使用(主要是系统的C函数N个参数,看起来累啊!)。

首先我们枚举了加密方式

1
typedef NS_ENUM(NSInteger, HCDStringEncryptType) { HCDStringEncryptTypeMD2 = 0, HCDStringEncryptTypeMD4, HCDStringEncryptTypeMD5, HCDStringEncryptTypeSHA1, HCDStringEncryptTypeSHA224, HCDStringEncryptTypeSHA256, HCDStringEncryptTypeSHA384, HCDStringEncryptTypeSHA512, HCDStringEncryptTypeHmacMD5, //可以有密钥 HCDStringEncryptTypeHmacSHA1, //可以有密钥 HCDStringEncryptTypeHmacSHA256, //可以有密钥 HCDStringEncryptTypeHmacSHA384, //可以有密钥 HCDStringEncryptTypeHmacSHA512, //可以有密钥 HCDStringEncryptTypeHmacSHA224, //可以有密钥 HCDStringEncryptTypeRC2 = 100, // /*****************************/ HCDStringEncryptTypeRC4, // /*****************************/ HCDStringEncryptTypeAES, // /*****************************/ HCDStringEncryptTypeAES128, // /*** using default ECB mode **/ //AES目前只支持AES、AES128 HCDStringEncryptTypeDES, // /***** 初始化向量iv会被忽略 ****/ HCDStringEncryptType3DES, // /*****************************/ HCDStringEncryptTypeCAST, // /*****************************/ HCDStringEncryptTypeBlowfish, // /*****************************/};

然后定义了这么一个接口

1
@interface HCDStringEncryptObject : NSObject- (nullable HCDStringEncryptObject *)initWithOriginString:(nullable NSString *)originString keyString:(nullable NSString *)keyString encryptType:(HCDStringEncryptType)encryptType isBase64:(BOOL)base64;- (void)base64 NS_AVAILABLE(10_9, 7_0);- (void)base64Decode NS_AVAILABLE(10_9, 7_0);/** * 针对可逆加密的解密方法 */- (void)decode;@property (nonatomic,readonly,getter=isBase64) BOOL base64;@property (nonatomic,readonly) HCDStringEncryptType encryptType;@property (strong, nonatomic, nullable,readonly) NSString *keyString;@property (strong, nonatomic, nullable,readonly) NSString *originString;@property (strong, nonatomic, nullable,readonly) NSString *encryptedString; //解密之后和originString 一样@property (strong, nonatomic, nullable,readonly) NSData *encryptedData; //解密之后是originString的NSData@end

这样的话我们就能得到加密的方式,加密之后的data以及加密之后的字符串,同时还可以选择是否进行base64编码等非常方便,至于实现的话,主要是调用系统的加密实现,然后再整。一定要记得导入#import 哦



热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等