目录

什么是ECB模式?

如何使用Java 实现ECB模式的AES算法?

加密方法

解密方法


什么是ECB模式?

ECB,Electronic Codebook,电码本。ECB模式是分组算法的一种基本模式,它不使用链接模式,也不使用初始化向量。在加密或解密过程中,明文数据或密文数据被分成若干个数据分组,再分别对每个数据分组进行加密或解密运算,得到密文分组或明文分组。每一个数据分组的运算都是独立的,互不影响。

独立运算意味着可以并行地运算,相应地运算效率也会大大的提高。但正是链接模式和初始化向量的缺失,导致ECB模式有巨大的安全缺陷。攻击者往往可以利用ECB模式的缺陷进行“数据重放攻击”。

虽然ECB模式并不安全,但仍然值得我们去学习。通过ECB模式的学习,有助于我们进一步理解链接模式和初始化向量对分组算法安全性的影响。

如何使用Java 实现ECB模式的AES算法?

首先我们来了解一下JCE。以下这段描述摘自Oracle文档:

The Java Cryptography Extension (JCE) provides a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithms. Support for encryption includes symmetric, asymmetric, block, and stream ciphers. The software also supports secure streams and sealed objects.

JCE was previously an optional package (extension) to the Java 2 SDK, Standard Edition (Java 2 SDK), versions 1.2.x and 1.3.x. JCE has been integrated into the Java 2 SDK since the 1.4 release.

JCE (Java Cryptography Extension, Java加密扩展) 提供了一套用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。从1.4版本开始,JCE已经被集成到Java 2 SDK中。

作为JCF框架的核心组成,javax.crypto.Cipher 类提供了密码的加解密功能。

public static final Cipher getInstance(String transformation)

此方法遍历已注册的安全Providers列表,从最首选的Provider开始。返回一个新的Cipher对象,该对象封装了第一个支持指定算法的Provider的CipherSpi实现。

下面是两个标准的 Cipher transformations,括号内表示的是密钥的长度。
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)

加密方法

   public static byte[] encrypt(byte[] key, byte[] plainData){try {Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");SecretKeySpec spec = new SecretKeySpec(key, "AES");cipher.init(Cipher.ENCRYPT_MODE, spec);return cipher.doFinal(plainData);} catch (Exception e) {e.printStackTrace();return null;}}

解密方法 

    public static byte[] decrypt(byte[] key, byte[] cipherData){try {Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");SecretKeySpec spec = new SecretKeySpec(key, "AES");cipher.init(Cipher.DECRYPT_MODE, spec);return cipher.doFinal(cipherData);} catch (Exception e) {e.printStackTrace();return null;}}

Cipher.getInstance("AES/ECB/PKCS5Padding")

返回一个Cipher对象,该对象实现ECB模式的AES算法,并使用PKCS5Padding模式进行数据填充。

如果使用AES/ECB/NoPadding模式,输入的明文数据必须是16字节的整数倍,否则代码执行时会抛出不合法数据块大小异常。

javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes

对称加密算法AES - ECB模式相关推荐

  1. python3 在线加密_Python3对称加密算法AES、DES3实例详解

    本文实例讲述了Python3对称加密算法AES.DES3.分享给大家供大家参考,具体如下: python3.6此库安装方式,需要pip3 install pycryptodome. 如有site-pa ...

  2. 对称加密算法AES联合设备IMEI码设计的加密机制

    AES算法介绍 对称加密算法 AES,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加 ...

  3. golang实现AES ECB模式的加密和解密

    最近有一个需求需要在golang中实现AES ECB模式的加密和解密,  看了一下官方文档和相关资料发现golang 官方包并没有完善的实现,于是自己尝试写了一个,本文中的AES算法是基于ECB模式, ...

  4. 对称加密算法AES之GCM模式简介及在OpenSSL中使用举例

    AES(Advanced Encryption Standard)即高级加密标准,由美国国家标准和技术协会(NIST)于2000年公布,它是一种对称加密算法.关于AES的更多介绍可以参考:https: ...

  5. C++或C 实现AES ECB模式加密解密,支持官方验证

    本文主要介绍 AES 算法的加解密方法.本文使用的语言为 C++,调用的 AES 库为:cryptopp. 1 概述 AES 加密算法的介绍如下(摘自 WikiPedia): 高级加密标准(英语:Ad ...

  6. Java实现对称加密算法-AES加解密

    AES(Advanced Encryption Standard)意思是高级加密标准,是一种区块加密标准.这个标准用来替代原先的DES,且已经被广泛使用. DES使用56位密钥,所以比较容易被破解. ...

  7. java加密算法之对称加密算法AES

    先上效果图 源码 package com.symmetric.aes.util;import org.apache.commons.codec.binary.Hex; import org.apach ...

  8. 对称加密算法(AES加密)以及对称算法与非对称算法的对比

    概述 对称加密算法就是传统的用一个密码进行加密和解密.例如,我们常用的WinZIP 和WinRAR对压缩包的加密和解密,就是使用对称加密算法:         从程序的角度着,所谓加密,就是这样一个函 ...

  9. 对称加密算法AES简介及在OpenSSL中使用举例

    高级加密标准(AES, Advanced Encryption Standard)由美国国家标准和技术协会(NIST)于2000年公布,它是一种对称加密算法,用来替代DES.AES也称为Rijndae ...

最新文章

  1. mysql 安装 se_mysql的安装过程
  2. 操作符*或者-的重载
  3. 二倍图三倍图什么意思_搞笑GIF图:搞笑GIF图:平安夜为什么见不到“圣诞老人”...
  4. mysql-3 检索数据(1)
  5. 如何设置打印的时候不加上页面链接_excel表格的这10个打印小技巧,办公室财务人员记得收藏...
  6. uoni扫地机器人好用吗_抖音走红的日本uoni尤利扫地机器人好吗?体验感如何?...
  7. Nhibernate中Unexpected row count的一种解决办法
  8. templates是什么意思_什么?噪音可以用来降温做冰箱?
  9. go编译为linux可执行文件,go编译可执行文件
  10. 三型两步验证登不上_Apple ID 两步验证
  11. Unity自定义文件夹图标颜色 个性化Unity编译器 unity 彩色文件夹
  12. Arduino驱动HDC1080测量温湿度
  13. H3C交换机基本命令
  14. 磨金石教育摄影技能干货分享|有哪些让你难以忘怀的人文摄影照片
  15. 自动化改造要想取得最大效益,要搞清这几个问题!
  16. 数字化门店管理|如何让门店数字化管理,更加贴合日常运营细节?
  17. 解决腾讯文档使用收集表收集图片,图片无法批量保存到本地问题
  18. 最受欢迎的几大BUG管理系统
  19. Mybatis中使用了哪些设计模式
  20. 为特斯拉车主构思设计的一款刹车踩踏数据监测器

热门文章

  1. 随机模型,估计与控制 ——介绍
  2. Android开发踩坑之旅
  3. ad怎么导入cad的外形尺寸_AD10怎样精确导入CAD文件?
  4. 收集了几个有趣的代码注释
  5. 关于UI使用ContentSizeFitter组件同步立即响应
  6. Python数据分析辅助审计工作
  7. RAS 和 NDIS 拨号模式
  8. 2012年上半年信息系统项目管理师 上午试题和参考答案及解析
  9. Codeforces Problem-1593A Elections
  10. 基于S32K的MBD开发环境搭建