• 应用软件安全编程--23避免使用不安全的操作模式


    块密码又称为分组加密, 一次加密明文中的一个块。将明文按一定的位长分组,明文组经过加密运 算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。这种加密算法共有四种操作 模式用于描述如何重复地应用密码的单块操作来安全的转换大于块的数据量,分别是电子代码(ECB)、密码块链(CBC)、 密码反馈(CFB) 以及输出反馈(OFB)。  其 中ECB 模式下相同的明文块总是会得到相同的密文,故不能抵挡回放攻击,而 CBC 模式则没有这个缺陷。

    对于避免使用不安全的操作模式的情况,示例1给出了不规范用法(Java 语言)示例。示例2给出了规范用法(Java 语言)示例。

    1. 示例1:
    2. Cipher  cipher  =  Cipher.getInstance("AES/ECB/PKCS7Padding","BC");
    3.  
    4. cipher.init(Cipher.ENCRYPT  MODE,createSecretKey(seed));

    以上代码将 AES 密码用于 ECB 模式。

    加密大于块的数据时,需要注意避免使用ECB 模式。由于 CBC 模式不会对相同的明文块生成相 同的密文块,所以CBC 模式更好。然而,CBC 模式效率较低,并且在和 SSL 一起使用时会造成严重风 险。可以改用CCM(Counter with CBC-MAC)模式,如果更注重性能,在可用的情况下则使用GCM(Galois/Counter)模式。

    1. 示例2:
    2. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");
    3. cipher.init(Cipher.ENCRYPT  MODE,createSecretKey(seed));

    以上代码将 AES 密码用于CBC 模式。

  • 相关阅读:
    用Java语言创建的Spring Boot项目中,如何传递数组呢??
    黑客为什么不 入侵银行一夜暴富
    【技术分享】IS-IS 概述
    【uniapp/uview1.x】u-upload 在 v-for 中的使用时, before-upload 如何传参
    Lombok详解
    Fair原理篇之Fair逻辑动态化通信实现
    解决vue3类型“{}”上不存在属性
    【微前端】single-spa 到底是个什么鬼
    APP开发的方式
    blob相关
  • 原文地址:https://blog.csdn.net/wzh305365294/article/details/134523375