Java中的javax.crypto.Cipher类

文章目录

    • 类的定义和初始化
    • 目前已支持的算法
      • 其中常见的`加密模式`有以下几种
      • 其中常见的`填充规则`有以下几种
    • Cipher类里面常用到的方法
    • 一些示例代码

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

类的定义和初始化

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

密码 = Cipher.getInstance(类型)

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

目前已支持的算法

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

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

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

  1. ECB(Electronic Codebook Book, 电码本模式)表示将明文分成若干小段, 然后对每小段进行加密
    Java中的javax.crypto.Cipher类_第1张图片
  2. CBC(Cipher Block Chaining, 密码分组链接模式)表示先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密
    Java中的javax.crypto.Cipher类_第2张图片

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

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

Cipher类里面常用到的方法

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

一些示例代码

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

你可能感兴趣的:(Java服务端)