Java中的javax.crypto.Cipher类

本文深入介绍Java中用于加密解密的Cipher类,包括其定义、初始化方法及常见加密算法如AES、DES等的使用。探讨了加密模式如ECB、CBC,填充规则如PKCS5Padding的应用,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在研究区块链里的一些加密算法,用Java简单实现了一下,发现部分算法都是通过javax.crypto.Cipher类来完成的,特地写一篇文章介绍一下这个类。

类的定义和初始化

javax.crypto.Cipher类是从jdk1.4就开始引入,所属jdk拓展包Java Cryptographic Extension(JCE)框架,该框架主要用于加密解密和密码功能.其代码定义如下:

密码 = Cipher.getInstance(类型)

其中 类型 参数有两种写法:
1. "算法/模式/填充"
2. "算法"

目前已支持的算法

总共支持以下加密算法: AES / DES / DESede / RSA

类型密码长度说明
AES/CBC/NoPadding128AES算法的CBC模式实现
AES/CBC/PKCS5Padding128AES算法的CBC模式实现, 并用PKCS5Padding规则填充
AES/ECB/NoPadding128AES算法的ECB模式实现
AES/ECB/PKCS5Padding128AES算法的ECB模式实现, 并用PKCS5Padding规则填充
DES/CBC/NoPadding56
DES/CBC/PKCS5Padding56
DESede/CBC/NoPadding168
DESede/CBC/PKCS5Padding168
DESede/ECB/NoPadding168
DESede/ECB/PKCS5Padding168
RSA/ECB/PKCS1Padding(1024, 2048)密码长度有范围可选
RSA/ECB/OAEPWithSHA-1AndMGF1Padding(1024, 2048)密码长度有范围可选
RSA/ECB/OAEPWithSHA-256AndMGF1Padding(1024, 2048)密码长度有范围可选

其中常见的加密模式有以下几种

  1. ECB(Electronic Codebook Book, 电码本模式)表示将明文分成若干小段, 然后对每小段进行加密
    在这里插入图片描述
  2. CBC(Cipher Block Chaining, 密码分组链接模式)表示先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密
    在这里插入图片描述

其中常见的填充规则有以下几种

大部分情况下,明文并非刚好N位的倍数。对于最后一个分组,如果长度小于N位,则需要用数据填充至N位
这里不做详细阐述

Cipher类里面常用到的方法

修饰符与返回值方法名(不带参数)说明
voidinit()使用密钥和一组算法参数初始化此密码
static CiphergetInstance()返回Cipher实现指定转换的对象
byte[ ]doFinal()完成多部分加密或解密操作,具体取决于此密码的初始化方式
…更多请查看官方API

一些示例代码

示例代码都丢到Gitee上去了, 有兴趣的可以点击查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值