美文网首页
Hash & 对称加密

Hash & 对称加密

作者: 崔希羽 | 来源:发表于2021-01-03 01:49 被阅读0次

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

Hash的特点

  • 算法是公开的
  • 对相同数据运算得到的结果是一样的
  • 对不同数据运算,如MD5得到的结果默认是128位,32个字符(16进制标识)
  • 不可逆运算
  • 信息摘要,信息“指纹”,是用来做数据识别的


    目前常见的散列算法

Hash的用途

  • 用户密码加密:将密码进行加密后存储在服务器,以防止账号信息泄漏。
  • 保护资料\版权:散列值可用于唯一地识别机密信息。
  • 确保传递真实的信息:消息或数据的接受者确认消息是否被篡改的性质叫数据的真实性,也称为完整性。发信人通过将原消息和散列值一起发送,可以保证真实性。如数字签名
  • 搜索引擎:对搜索内容进行分词后使用hash计算出结果的和,然后匹配出搜索结果。
  • 语音识别:如分析正在播放的音乐,并将它于存储在数据库中的已知的散列值进行比较。用户就能够收到被识别的音乐的曲名。

在实际应用中,不能直接使用MD5,如果直接使用的话,很可能会被破解,如网站cmd5通过穷举字符组合进行反向查询。所以我们在应用的时候可以使用一些手段,如HMAC方案,通过加key、时间戳等手段进行二次hash运算。


对称密钥加密
又称为对称加密、私钥加密、共享密钥加密。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。常见的对称加密算法有AES("高级加密标准")、ChaCha20、3DES、Salsa20、DES("数据加密标准")、Blowfish、IDEA( "国际资料加密算法")、RC5、RC6、Camellia。对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。

对称加密有两种不同的应用模式:

  • ECB(Electronic Code Book):电子密码本模式,每一块数据独立加密,它是最基本的加密模式,相同的明文将永远加密成相同的密文。它容易受到密码本重放攻击,一般情况下很少用。
  • CBC(Cipher Block Chaining):密码分组链接模式,使用一个密钥和一个初始化向量[IV]对数据执行加密。
    明文被加密前要与前面的密文进行异或运算后再密码,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。第一块数据都与前面是关联的,因此CBC可以有效的保证密文的完整性,如果数据块传递过程中丢失,那么其后面的数据将无法正常解密。

使用openssl加解密

  • 加密:

    • AES(ECB)加密“hello”字符串
      $ echo -n hello | openssl enc -aes-128-ecb -K 616263 -nosalt | base64
    • AES(CBC)加密“hello”字符串
      $ echo -n hello | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt | base64
  • 解密:

    • AES(ECB)解密
      echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt –d
    • AES(CBC)解密
      echo -n u3W/N816uzFpcg6pZ+kbdg== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt –d

OC代码使用
引入头文件#import <CommonCrypto/CommonCrypto.h>,加解密都是使用同一个方法

    /*参数说明
     1、kCCEncrypt 加密/kCCDecrypt 解密
     2、加密算法。
     3、加密选项:ECB/CBC,iv存在使用kCCOptionPKCS7Padding,不存在使用kCCOptionPKCS7Padding | kCCOptionECBMode
     4、加密的密钥
     5、密钥的长度
     6、iv 初始化向量
     7、加密的数据
     8、加密的数据长度
     9、密文的内存地址
     10、密文缓冲区的大小
     11、加密结果大小
    */
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));

相关文章

  • 常用加密算法

    1 常用加密算法 常用加密算法有 对称加密算法、非对称加密算法、Hash算法 对称加密算法 加密和解密使用相同的秘...

  • CA概述(加密类型介绍以及证书申请过程)

    对称加密 非对称加密 公钥加密交换对称密钥 hash加密与数字签名 加密算法的特性比较 证书作用:公钥的安全传递 ...

  • Hash & 对称加密

    Hash一般译为“散列”,也有直接音译为“哈希”,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是...

  • 计算机加密算法总结《概论》

    常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密...

  • [转]常用加密算法概述

    一. 简述 常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密指加密和解密使用相同...

  • java常用加密算法

    简介 常见的加密算法可分为三大类:对称加密,非对称加密和hash算法 对称加密:加密和解密使用相同的密钥。 DES...

  • 对称加密,非对称加密,hash加密

    对称加密:DES,AES 非对称加密:RSA,DSA hash加密:MD5,SHA-1,SHA-2,SHA-3 对...

  • 加密算法(Android用法)

    加密算法可以归结为三大类:哈希算法,对称加密算法,非对称加密算法 Hash算法 Hash算法特别的地方在于它是一种...

  • 密码学之基本概念

    密码学笔记 常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 一、对称加密 指加密和解密使...

  • 哈希与加密算法

    常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 (1)对称加密指加密和解密使用相同密钥的...

网友评论

      本文标题:Hash & 对称加密

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