All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.crypto.symmetric.SymmetricDecryptor Maven / Gradle / Ivy

package cn.hutool.crypto.symmetric;

import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;

import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;

/**
 * 对称解密器接口,提供:
 * 
    *
  • 从bytes解密
  • *
  • 从Hex(16进制)解密
  • *
  • 从Base64解密
  • *
* * @author looly * @since 5.7.12 */ public interface SymmetricDecryptor { /** * 解密 * * @param bytes 被解密的bytes * @return 解密后的bytes */ byte[] decrypt(byte[] bytes); /** * 解密,针对大数据量,结束后不关闭流 * * @param data 加密的字符串 * @param out 输出流,可以是文件或网络位置 * @param isClose 是否关闭流,包括输入和输出流 * @throws IORuntimeException IO异常 */ void decrypt(InputStream data, OutputStream out, boolean isClose); /** * 解密为字符串 * * @param bytes 被解密的bytes * @param charset 解密后的charset * @return 解密后的String */ default String decryptStr(byte[] bytes, Charset charset) { return StrUtil.str(decrypt(bytes), charset); } /** * 解密为字符串,默认UTF-8编码 * * @param bytes 被解密的bytes * @return 解密后的String */ default String decryptStr(byte[] bytes) { return decryptStr(bytes, CharsetUtil.CHARSET_UTF_8); } /** * 解密Hex(16进制)或Base64表示的字符串 * * @param data 被解密的String,必须为16进制字符串或Base64表示形式 * @return 解密后的bytes */ default byte[] decrypt(String data) { return decrypt(SecureUtil.decode(data)); } /** * 解密Hex(16进制)或Base64表示的字符串 * * @param data 被解密的String * @param charset 解密后的charset * @return 解密后的String */ default String decryptStr(String data, Charset charset) { return StrUtil.str(decrypt(data), charset); } /** * 解密Hex(16进制)或Base64表示的字符串,默认UTF-8编码 * * @param data 被解密的String * @return 解密后的String */ default String decryptStr(String data) { return decryptStr(data, CharsetUtil.CHARSET_UTF_8); } /** * 解密,会关闭流 * * @param data 被解密的bytes * @return 解密后的bytes * @throws IORuntimeException IO异常 */ default byte[] decrypt(InputStream data) throws IORuntimeException { return decrypt(IoUtil.readBytes(data)); } /** * 解密,不会关闭流 * * @param data 被解密的InputStream * @param charset 解密后的charset * @return 解密后的String */ default String decryptStr(InputStream data, Charset charset) { return StrUtil.str(decrypt(data), charset); } /** * 解密 * * @param data 被解密的InputStream * @return 解密后的String */ default String decryptStr(InputStream data) { return decryptStr(data, CharsetUtil.CHARSET_UTF_8); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy