美文网首页
002-HASH&&对称加密

002-HASH&&对称加密

作者: 雾中探雪 | 来源:发表于2021-01-10 18:04 被阅读0次

001 --加密的类型:

  • 对称加密(传统加密):
    DES:数据加密标准(用的少因为强度低)
    3DES:使用 3 个密钥,对相同的数据进行三次加密,强度增加了。(由于密钥太保不方便保存,所以用的也很少)
    AES:高级加密标准(例如苹果钥匙串访问)
  • 非对称加密(现代加密):RSA
  • HASH加密:MD5、SHA1、SHA256

002--HASH加密

  • 定义:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。


    Hash的特点.png
    用途.png

003--数字签名:是用于鉴别数字信息的方法

  • 常用于支付时的金额,首先客户端将金额进行 HASH 加密,再进行 RSA 加密得到加密数据,再将原始金额与加密数据一起发给后端,后端拿到数据后首先 RSA 解密加密数据得到 HASH 值,再将原始金额进行 HASH 加密得到 HASH 值,两值对比,如果一样就表示支付数据未被篡改。

004--HMAC 加密方案:

  • 使用一个密钥加密,并且做了两次散列
  • 在实际开发中,客户端将用户名发给后端,后端服务器生成密钥key,再返回给客户端(进行 keychain保存),客户端使用HMACMD5进行加密,再将加密后的HMAC哈希值传给服务器,这样就完成注册登录。等于说每个用户都会有一个独立的密钥key,以保证用户密码安全。
  • 如果是多设备登录,当用户首次在新设备上登录时,需要向后端请求密钥key,这是后端不会直接给密钥key,而是先向已经认证过的设备请求授权(授权内容:您的账户在另一台 XX设备上登录,您是否给授权),只有授权通过后台会给新设备发送密钥key,客户端使用HMACMD5进行加密,再将加密后的HMAC哈希值传给服务器,这样就完成登录。这个过程就是,设备认证登录。
  • 如果黑客拿到用户名和HMAC哈希值(等于黑客拿到登录权限),再发给后端,进行账户登录。
  • 针对上面问题,解决方案:(客户端HMAC哈希值(注册时保存的)+客户端时间戳).MD5加密发给后端,后端接收后,将(后端HMAC哈希值+后端时间戳).MD5与接收到的数据进行比较,如果不等,就将后端时间戳提前一分钟,再进行加密比对如果还不成功,就认为登录失败。
  • 这样黑客再获取到用户名和HMAC哈希值,就必须两分钟之内进行登录,否则机会登录失效,同时此时HMAC哈希值已不是注册时的HMAC哈希值,所以黑客必须要子啊登录前拿到注册时的HMAC哈希值,否则即使拿到现在的HMAC哈希值也无法登录。

005--对称加密的应用模式

应用模式.png

006--CCCrypt函数。苹果的对称加密都是使用该函数

/*!
    @function   CCCrypt
    @abstract   Stateless, one-shot encrypt or decrypt operation.
                This basically performs a sequence of CCCrytorCreate(),
                CCCryptorUpdate(), CCCryptorFinal(), and CCCryptorRelease().

    @param      alg   定义加密算法 默认:AES、DES还有 3DES 等等
    @param      op    定义基本操作: kCCEncrypt(加密) or
                    kCCDecrypt(解密).
    @param      options    加密选项ECB:密码本 / CBC:链接
    @param      key           密钥
    @param      keyLength      密钥长度
    @param      iv           初始化向量,可选,用于密码块链接(CBC)模式。如果使用使用ECB模式或流,可设置为 NULL。对于声音加密,总是用随机数据初始化IV。
    @param      dataIn    要加密或解密的数据
    @param      dataInLength    要加密或解密的数据的长度
    @param      dataOut         加密或解密后的密文的内存地址。加密和解密可以“就地”执行,输入和输出使用相同的缓冲区。
    @param      dataOutAvailable 密文的缓冲区的大小
    @param      dataOutMoved    密文的大小. 如果缓冲区空间不足咋会返回kCCBufferTooSmall。
    @result     kCCBufferTooSmall表示数据输出中的空间不足缓冲器
                      kCalignmentError指示dataInLength未正确地对齐的。只能为块返回只有在解密或使用禁用填充的块进行加密。
                      kCCDecodeError表示密文格式不正确或“错误密钥”错误;仅在解密期间发生操作。

CCCryptorStatus CCCrypt(
    CCOperation op,         /* kCCEncrypt, etc. */
    CCAlgorithm alg,        /* kCCAlgorithmAES128, etc. */
    CCOptions options,      /* kCCOptionPKCS7Padding, etc. */
    const void *key,
    size_t keyLength,
    const void *iv,         /* optional initialization vector */
    const void *dataIn,     /* optional per op and alg */
    size_t dataInLength,
    void *dataOut,          /* data RETURNED here */
    size_t dataOutAvailable,
    size_t *dataOutMoved)
    API_AVAILABLE(macos(10.4), ios(2.0));

相关文章

  • https交互流程简述

    https使用到的加密算法 对称加密非对称加密 通过非对称加密,交换对称加密的密钥,之后采用对称加密传输非对称加密...

  • Web开发必须了解的密码学技术

    对称加密与非对称加密 按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解...

  • 加密算法的应用

    加密算法的应用 [TOC] 加密算法 加密算法主要分为对称加密和非对称加密。 对称加密 对称加密采用了对称密码编码...

  • 学习笔记:HTTPS协议原理

    对称加密和非对称加密 加密分两种,对称加密和非对称加密。对称加密是指加密的双方使用同一个密钥加密和解密数据。非对称...

  • Linux系列五之SSH原理深度解析

    一、对称加密和非对称加密 为了理解SSH,先要介绍两个重要概念:对称加密和非对称加密。 1-1、对称加密 所谓对称...

  • https传输过程

    HTTPS传输过程主要涉及到对称加密和非对称加密两种方式,对称加密用来加密数据内容,非对称加密用来加密对称加密的秘...

  • 加密算法的理解

    加密算法按类型分类: 对称加密、非对称加密、散列算法 对称加密: 加密双方都持有加密算法及密钥 非对称加密: 加密...

  • 加密相关

    加密分为:对称加密和非对称加密。非对称加密的用途:1:加解密,但是速度很慢。2:交换对称加密的密钥,对称加密很快3...

  • 对称加密和非对称加密

    对称加密: 对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥。 非对称加密: 加密...

  • 密码学及iOS签名(一) —— 加密解密

    加密解密类型 对称加密 公钥密码(非对称加密) 对称加密(常见的DES、 3DES、AES) 在对称密码中,加密、...

网友评论

      本文标题:002-HASH&&对称加密

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