• 对称加密之AES加密详解


    最近有人问我AES对称加密是啥,我回答了个大概,发现自己不能清晰的讲出来,特此记录,以供学习

    一、对称加密

    对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。

    二、AES加密

    高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具有以下几个特点:

    1、最常用的对称加密算法
    2、密钥建立时间短、灵敏性好、内存需求低
    3、实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)
    4、密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)
    5、填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。
    6、加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。

    简叙和非对称加密场景的差异
    对称加密:
    适合经常发送数据的场合

    非对称加密:加密和解密用的密钥是不同的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。

     具体的加密流程如下图:

    下面简单介绍下各个部分的作用与意义:

    • 明文P

      

    没有经过加密的数据。
    • 密钥K
    用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,
    通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。
    • AES加密函数
    设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。
    • 密文C
    经加密函数处理后的数据
    • AES解密函数
    设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

    附上加解密代码:https://github.com/chenyRain/Common-Code/blob/master/AES%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86/Encryption.php

  • 相关阅读:
    关于Windows 2000,IIS 5/4下面,Form内容超过200K解决办法!
    获取客户端网卡MAC地址和IP地址的几种方法
    关于Java的异常捕获
    redis的swap
    Linux下C++程序获取运行时间的一种方式
    CentOS 修改IP地址, DNS, 网关[内容来源网络]
    [转]ubuntu12.04搭建ruby on rails 环境
    rails环境 bundle 时无法安装nokogiri 完美解决
    SQL Server – 冷知识 (新手)
    Typescript – 学习笔记 tsconfig.json
  • 原文地址:https://www.cnblogs.com/chenhaoyu/p/10497441.html
Copyright © 2020-2023  润新知