public interface Cipher
密码接口,提供统一的API,用于兼容和统一JCE和BouncyCastle等库的操作
- process和doFinal组合使用,用于分块加密或解密。 例如处理块的大小为8,实际需要加密的报文长度为23,那么需要分三块进行加密,前面2块长度为8的报文需要调用process进行部分加密, 部分加密的结果可以从process的返回值获取到, 最后的7长度(其实一般会填充到长度为块长度8)的报文则调用doFinal进行加密,结束整个部分加密的操作。
- processFinal默认处理并输出小于块的数据,或一次性数据。
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceCipher所需参数,包括Key、Random、IV等信息 -
Method Summary
Modifier and TypeMethodDescriptionintdoFinal(byte[] out, int outOff) 处理最后一块数据 当process(byte[], int, int, byte[], int)处理完数据后非完整块数据,此方法用于处理块中剩余的bytes 如加密数据要求128bit,即16byes的整数,单数处理数据后为15bytes,此时根据padding方式不同,可填充剩余1byte为指定值(如填充0) 当对数据进行分段加密时,需要首先多次执行process方法,在最后一块数据处理完后执行此方法。获取算法名称int获取块大小,当为Stream方式加密时返回0intgetOutputSize(int len) 返回输出缓冲区为了保存下一个update或doFinal操作的结果所需的长度(以字节为单位) 下一个update或doFinal调用的实际输出长度可能小于此方法返回的长度。voidinit(org.miaixz.bus.core.lang.Algorithm.Type mode, Cipher.Parameters parameters) 初始化模式和参数intprocess(byte[] in, int inOff, int len, byte[] out, int outOff) 执行运算,可以是加密运算或解密运算 此方法主要处理一块数据,一块数据处理完毕后,应调用doFinal(byte[], int)处理padding等剩余数据。default byte[]processFinal(byte[] in) 处理数据,并返回最终结果 此方法用于完整处理一块数据并返回。default byte[]processFinal(byte[] in, int inOffset, int inputLen) 处理数据,并返回最终结果 此方法用于完整处理一块数据并返回。
-
Method Details
-
getAlgorithm
String getAlgorithm()获取算法名称- Returns:
- 算法名称
-
getBlockSize
int getBlockSize()获取块大小,当为Stream方式加密时返回0- Returns:
- 块大小,-1表示非块加密
-
init
初始化模式和参数- Parameters:
mode- 模式,如加密模式或解密模式parameters- Cipher所需参数,包括Key、Random、IV等信息
-
getOutputSize
int getOutputSize(int len) 返回输出缓冲区为了保存下一个update或doFinal操作的结果所需的长度(以字节为单位) 下一个update或doFinal调用的实际输出长度可能小于此方法返回的长度。 一般为块大小对应的输出大小- Parameters:
len- 输入长度- Returns:
- 输出长度,-1表示非块加密
-
process
int process(byte[] in, int inOff, int len, byte[] out, int outOff) 执行运算,可以是加密运算或解密运算 此方法主要处理一块数据,一块数据处理完毕后,应调用doFinal(byte[], int)处理padding等剩余数据。- Parameters:
in- 输入数据inOff- 输入数据开始位置len- 被处理数据长度out- 输出数据outOff- 输出数据开始位置- Returns:
- 处理长度
-
doFinal
int doFinal(byte[] out, int outOff) 处理最后一块数据 当process(byte[], int, int, byte[], int)处理完数据后非完整块数据,此方法用于处理块中剩余的bytes 如加密数据要求128bit,即16byes的整数,单数处理数据后为15bytes,此时根据padding方式不同,可填充剩余1byte为指定值(如填充0) 当对数据进行分段加密时,需要首先多次执行process方法,在最后一块数据处理完后执行此方法。- Parameters:
out- 经过process执行过运算的结果数据outOff- 数据处理开始位置- Returns:
- 处理长度
-
processFinal
default byte[] processFinal(byte[] in) 处理数据,并返回最终结果 此方法用于完整处理一块数据并返回。- Parameters:
in- 输入数据- Returns:
- 结果数据
-
processFinal
default byte[] processFinal(byte[] in, int inOffset, int inputLen) 处理数据,并返回最终结果 此方法用于完整处理一块数据并返回。- Parameters:
in- 输入数据inOffset- 输入开始的 input中的偏移量inputLen- 输入长度- Returns:
- 结果数据
- See Also:
-