美文网首页
iOS数据加密

iOS数据加密

作者: lxl125z | 来源:发表于2017-03-14 17:03 被阅读0次

    相关文章:数字证书原理

    SSL/TLS协议运行机制的概述

    一、常用的加密算法

    1、对称加密

    对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。<qq style="color:red">对称加密的优点在于加密、解密效率通常比较高</qq>。
    常用加密算法有DES,3DES,AES等.

    DES  数据加密标准(用的比较少,因为强度不够).
    3DES 使用3个密钥,对相同的数据执行三次加密,强度增强.
    AES  高级加密标准,目前美国国家安全局使用AES加密,苹果的钥匙串访问就是使用AES加密。
    
    

    而对称加密的模式最为常见的是两种:ECB,CBC

    ECB:<qq style="color:gray">加密文件会被分为若干个加密块,每个块都是独立进行加密,互不影响。所以,如果变动数据中的某一个地方,加密之后其对应得块也会发生变化,缺点是一旦被破解某个模块,就可以进行推理,进而有机会获取到重要数据。</qq><p>
    CBC:<qq style="color:gray">使用一个密钥和一个初始化向量 (IV)对数据执行加密转换。加密文件同样会被分为若干个加密块,每个块都依赖于上一个加密块进行加密,互相牵制。所以,如果变动数据中的某一个地方,加密之后整体数据都会发生变化。可以有效地保证密文的完整性</qq>

    2、非对称加密

    与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey);并且加密密钥和解密密钥是成对出现的。<qq style="color:red">通过公钥加密的数据,只能通过私钥解开。通过私钥加密的数据,只能通过公钥解开</qq>。常见的非对称加密算法有RSA(加密,证书生成),DSA(数字签名)
    第三方代码

    非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是 2048 位,意味着待加密内容不能超过 256 个字节。

    3、HASH加密

    Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度(32个字符)的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。对用相同数据,加密之后的密文相同。
    常见的Hash算法有MD5和SHA。

        //md5 处理
        class func md5(_ string:String) -> String {
            let str = string.cString(using: String.Encoding.utf8)
            let digestLen = Int(CC_MD5_DIGEST_LENGTH)
            let strLen = CUnsignedLongLong(string.lengthOfBytes(using: String.Encoding.utf8))
            let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
            CC_MD5(str!, CC_LONG(strLen), result)
            let hash = NSMutableString()
            for i in 0 ..< digestLen {
                hash.appendFormat("%02X", result[i])
            }
            result.deinitialize()
            
            return String(format: hash as String)
        }
    
    

    二、HTTPS原理

    HTTPS是HTTP的安全版,HTTPS的安全基础是SSL/TLS。<qq style="color:red">Https的作用:内容加密,身份认证 ,数据完整性 </qq>

    https通信过程

    对称秘钥用公钥进行加密,服务端用私钥解密。


    1、摘要算法

    数字摘要是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。

    2、数字签名

    将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过.

    数字签名只能验证数据的完整性,数据本身是否加密不属于数字签名的控制范围

    3、数字证书

    由一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥。<p>
    证书包含了颁发证书的机构的名字 -- CA

    证书的有效期

    证书内容本身的数字签名(用CA私钥加密,证书颁发机构的)

    证书持有者的公钥

    证书签名用到的hash算法

    证书验证:

    1、Company在证书颁发机构"SecureTrust CA"申请到这个证书后,我们把证书投入使用,我们在通信过程开始时会把证书发给对方。

    2、在操作系统中受信任的发布机构的证书中去找"SecureTrust CA"的证书,找不到证明证书可能有问题,找到的话,就用证书发布机构的根证书(一般是在操作系统中的)中的公钥,去验证证书的数字签名,确定证书的合法完整性。

    3、然后就可以放心的使用证书的这个公钥进行通信了。

    4、SSL/TLS

    SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的是对称加密。

    相关文章

      网友评论

          本文标题:iOS数据加密

          本文链接:https://www.haomeiwen.com/subject/kjyhnttx.html