zoukankan      html  css  js  c++  java
  • 密码学系列——加密模式和填充模式

    前言

    介绍加密模式和填充模式。

    正文

    介绍两种加密的模式:

    ECB
    ECB : Electronic codebook, 电子密码本. 需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密

    优点 : 可以并行处理数据
    缺点 : 同样的原文生成同样的密文, 不能很好的保护数据
    同时加密,原文是一样的,加密出来的密文也是一样的

    CBC
    CBC : Cipher-block chaining, 密码块链接. 每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块

    优点 : 同样的原文生成的密文不一样
    缺点 : 串行处理数据.

    填充模式:

    两种填充模式,一种是NoPadding,另一种是PKCS5Padding

    NoPadding
    不填充.

    在DES加密算法下, 要求原文长度必须是8byte的整数倍

    在AES加密算法下, 要求原文长度必须是16byte的整数倍

    PKCS5Padding
    数据块的大小为8位, 不够就补足
    Tips
    默认情况下, 加密模式和填充模式为 : ECB/PKCS5Padding
    如果使用CBC模式, 在初始化Cipher对象时, 需要增加参数, 初始化向量IV : IvParameterSpec iv = new IvParameterSpec(key.getBytes());

    这里介绍一下CBC 同样的原文生成的密文不一样这个就有点装了,其实是这样子的CBC 需要与前一个密文块进行异或后,但是明文开始没有前一个密文,所以呢,我们要有一个iv。

    也就是说同样的key和原文,iv不同生成的密文不一样。真正的原位生成的密文不一样,是在消息摘要中。

    好了,那么现在知道了注意的是加密的模式,选择的是什么,比如说ECB只需要key,CBC还需要iv,同时填充模式如果是nopadding 模式,那么需要自己去填充,这个其实可以自己去设计算法,这样就不会那么容易被破解。

    说一个个人的例子,公司服务器补位的时候用的就是自己设计的东西补位的,当时服务器告诉我是aes模式,我发送到服务器端,服务器端解不出来,异常了,后来才知道要按照固定格式补位,服务器会检查是否是自己的方式补位的方式。

  • 相关阅读:
    数据结构实用C语言基础
    第二个星期的C语言
    hello world!
    代码规范
    调用有道词典翻译api
    PO,POJO,BO,DTO,VO的区别
    切换Eclipse语言包
    URI和URL区别
    get和post
    Eclipse快捷键
  • 原文地址:https://www.cnblogs.com/aoximin/p/13454608.html
Copyright © 2011-2022 走看看