二 密码学-HASH&对称

2020-04-19  本文已影响0人  蚂蚁也疯狂
nx_001.jpeg

上一篇文章,讲述了非对称加密,也就是RSA的数据原理和简单实用,那么在这篇文章将要讲述的就是对称加密,其中以Hash(散列算法,哈希函数)最为广为人知。

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

接下来本文会从以下几点进行阐述:

1.HASH概述

1.1常见的3大类加密算法:

  1. 哈希(散列)函数
    md5、SHA1/256/512
    HMAC(不是加密算法,是一种加密方式)
  2. 对称加密
    DES
    3DES
    AES(高级密码标准)
  3. 非对称加密
    RSA算法

1.2 Hash的特点:

  1. 算法是公开的
  2. 对相同的数据运算,得到的结果是一样的
  3. 对不同的数据运算,如MD5得到的结果默认是128位(32个字符,16进制表示)
  4. 没法逆运算
  5. 信息摘要,信息‘指纹’,用来做数据识别

1.3 Hash的用途:

2.密码加密

用户密码的二个原则:

2.1 Hash简单使用

三种加密方式:

三种加密方式对比

MD5 不够安全了。可以反查询!
MD5加盐 盐是固定的,写死在程序里面,一旦泄露就不安全了!
HMAC 加密方案 1.使用一个密钥加密,并且做两次散列!2.在实际开发中,密钥(KEY)来自于服务器(动态的)!3.一个账号,对应一个KEY,而且还可以更新!

加密理解:

参见代码ReverseEncrypt1 Hash简单使用

3.数字签名

对原始数据的HASH值用非对称加密,我们称之为数据签名

具体文章参考:
作者:请叫我Hank
原文地址:https://www.jianshu.com/p/02034d1a91b5
原文地址:https://www.jianshu.com/p/3c9e2055ae5b

4.对称加密

对称加密方式:明文通过密钥加密得到密文。密文通过密钥解密得到明文。

常用的对称加密分为三种:

方式 含义
DES 数据加密标准(用得少,因为强度不够)
3DES 使用3个密钥,对相同的数据执行3次加密,强度增强
AES 高级密码标准

4.1 对称加密算法的2种加密模式

其中AES为现在的的主流加密方式,AES有具体分为ECB和CBC两种加密模式:

特点:CBC可以有效的保证密文的完整性,如果一个数据块在传递是丢失或改变,后面的数据将无法正常解密。

4.2 终端命令

加密:

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

4.3 代码演示

参见代码ReverseEncrypt2 对称加密

使用CCCrypt加密的安全隐患:

1. 通过条件断点可以获取到系统的加密函数

总结

参考文章:
作者:一缕清风扬万里
原文地址:https://www.jianshu.com/p/4a920586a01f
作者:请叫我Hank
原文地址:https://www.jianshu.com/p/02034d1a91b5

上一篇下一篇

猜你喜欢

热点阅读