iOS中加密算法的学习

本文介绍了iOS中DES加密算法的工作原理、安全性及其代码实现,强调了DES密钥管理的重要性。同时提到了Base64编码的作用和实现,并提及MD5在一致性验证中的应用,以及数字证书和安全访问认证在保障通信安全的角色。
摘要由CSDN通过智能技术生成

DES算法简介: 

DES算法的入口参数有三个:Key、Data、Mode。其中Key為8个字节共64位,是DES算法的工作密钥;Data也為8个字节64位,是要被加密或被解密的数据;Mode為DES的工作

方式,有两种:加密或解密。


  DES算法是这样工作的:如Mode為加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作為DES的输出结果;如Mode為解密,则用Key去把密码形式的数

据Data解密,还原為Data的明码形式(64位)作為DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在

公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、

MAC等)在公共通信网中传输的安全性和可靠性。


  通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。


DES算法具有极高安全性,到目前為止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间為256,这意味著如果一

台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随著科学技术的发展,当出现超高速

计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。


在DES密钥Key的使用、管理及密钥更换的过程中,应绝对避开DES 算法的应用误区,即:绝对不能把Key的第8,16,24......64位作為有效数据位,来对Key 进行管

理。这一点,特别推荐给金融银行界及非金融业界的领导及决策者们,尤其是负责管理密钥的人,要对此点予以高度重视。有的银行金融交易网络,利用定期更换

DES密钥Key的办法来进一步提高系统的安全性和可靠性,如果忽略了上述应用误区,那麼,更换新密钥将是徒劳的,对金融交易网络的安全运行将是十分危险的,

所以更换密钥一定要保证新Key与旧Key真正的不同,即除了第8,16,24,...64位外其它位数据发生了变化,请务必对此保持高度重视!


iOS中DES加密的代码实现:

/************************************************************
 函数名称 : + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key
 函数描述 : 文本数据进行DES加密
 输入参数 : (NSData *)data
 (NSString *)key
 输出参数 : N/A
 返回参数 : (NSData *)
 备注信息 : 此函数不可用于过长文本
 **********************************************************/
/*!
 @function   CCCrypt
 @abstract   Stateless, one-shot encrypt or decrypt operation.
 This basically performs a sequence of CCCrytorCreate(),
 CCCryptorUpdate(), CCCryptorFinal(), and CCCryptorRelease().
    (无国界的,一个基本的加密或解密操作。 以这个方法为基础展示了一系列的方法:)
 
 @param      alg             Defines the encryption algorithm. 
                            (定义加密算法 --> CCAlgorithm)
 
 @param      op              Defines the basic operation: kCCEncrypt or
 kCCDecrypt.
                             (定义基本的操作:加密或解密)
 
 @param      options         A word of flags defining options. See discussion
 for the CCOptions type.
                             (定义选择权??)
 
 @param      key             Raw key material, length keyLength bytes.
                             (未经处理的秘钥)
 
 @param      keyLength       Length of key material. Must be appropriate
 for the select algorithm. Some algorithms may
 provide for varying key lengths.(钥匙原料的长度。必须适应选择的算法。一些算法可以提供不同的秘钥长度)
 
 @param      iv              Initialization vector, optional. Used for
 Cipher Block Chaining (CBC) mode. If present,
 must be the same length as the selected
 algorithm's block size. If CBC mode is
 selected (by the absence of any mode bits in
 the options flags) and no IV is present, a
 NULL (all zeroes) IV will be used. This is
 ignored if ECB mode is used or if a stream
 cipher algorithm is selected.
                            (初始化向量,可选的。 用于密码块链接(CBC)模式。如果存在的话,必须与所选择的算法的块大小相同长度。如果CBC模式被选择(由不存在,在选项标志的任何模式的比特),并且如果目前没有IV,一个NULL(全零)将被使用。如果ECB模式被使用,或者流密码算法被选
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值