zoukankan      html  css  js  c++  java
  • RSA与AES的区别

    RSA

    非对称加密,公钥加密,私钥解密,反之亦然。由于需要大数的乘幂求模等算法,运行速度慢,不易于硬件实现。

    通常私钥长度有512bit,1024bit,2048bit,4096bit,长度越长,越安全,但是生成密钥越慢,加解密也越耗时。

    既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;

    同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。

    AES

    对称加密,密钥最长只有256个bit,执行速度快,易于硬件实现。由于是对称加密,密钥需要在传输前通讯双方获知。

    基于以上特点,通常使用RSA来首先传输AES的密钥给对方,然后再使用AES来进行加密通讯。

    AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥

    长度不足时,会补齐)。AES加密有很多轮的重复和变换。大致步骤如下:

    1、密钥扩展(KeyExpansion),

    2、初始轮(Initial Round),

    3、重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,

    4、最终轮(Final Round),最终轮没有MixColumns

    AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元

    素大小就是明文区块中的一个Byte)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:

    AddRoundKey (加轮秘钥)— 矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算。

    SubBytes (字节代换)— 通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

    ShiftRows (行移位)— 将矩阵中的每个横列进行循环式移位。

    MixColumns (列混淆)— 使用线性转换来混合每列的四个字节。

    字节代换

    代换表(S盒)被设计成能够抵挡所有已知的攻击
    例如,十六进制{95}对应的的行值是9,列值是5,S盒中此处的值是{2A}。因此{95}被映射为{2A}

  • 相关阅读:
    Appium教程
    ES6对象类型判断
    MyBatisPlus的时间段和模糊查询
    一个div中多个元素垂直居中的一种解决办法
    @JsonFormat与@DateTimeFormat注解的使用
    java日期类型对象通过mybatis向数据库中的存取
    Vue.js单向绑定和双向绑定实例分析
    Maven的使用
    如何将本地的项目提交到码云的远程仓库
    Linux CentOS7 的安装
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/6971297.html
Copyright © 2011-2022 走看看