All Classes and Interfaces
Class
Description
抽象的非对称加密对象,包装了加密和解密为Hex和Base64的封装
AES加密算法实现
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法
对于Java中AES的默认模式是:AES/ECB/PKCS5Padding,如果使用CryptoJS,请调整为:padding: CryptoJS.pad.Pkcs7
高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES是一个使用128为分组块的分组加密算法,分组块和128、192或256位的密钥一起作为输入,
对4×4的字节数组上进行操作 众所周之AES是种十分高效的算法,尤其在8位架构中,这源于它面向字节的设计
AES 适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)
达到十亿量级
ASN.1 – Abstract Syntax Notation dot one,抽象记法1 工具类。
ASN.1描述了一种对数据进行表示、编码、传输和解码的数据格式。它的编码格式包括DER、BER、DL等
非对称基础,提供锁、私钥和公钥的持有
基于BouncyCastle库封装的加密解密实现,包装包括:
BufferedBlockCipher
BlockCipher
StreamCipher
AEADBlockCipher
BouncyCastle库的
CipherParameters封装BouncyCastle的HMAC算法实现引擎,使用
Mac 实现摘要
当引入BouncyCastle库时自动使用其作为ProviderBouncyCastle的MAC算法实现引擎,使用
Mac 实现摘要
当引入BouncyCastle库时自动使用其作为ProviderBCrypt加密算法实现。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。
Provider对象生产工厂类
通过SPI方式加载可用的
BouncyCastleProvider,并创建对应的Provider
spi定义在:META-INF/services/org.miaixz.bus.crypto.ProviderBouncyCastleProvider 工厂类安全相关工具类
加密分为三种:
1、对称加密(symmetric),例如:AES、DES等
2、非对称加密(asymmetric),例如:RSA、DSA等
3、摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
CBCBlockCipherMac实现的MAC算法,使用CBC Block方式证书相关套件
ChaCha20算法实现
ChaCha系列流密码,作为salsa密码的改良版,具有更强的抵抗密码分析攻击的特性,“20”表示该算法有20轮的加密计算。
密码接口,提供统一的API,用于兼容和统一JCE和BouncyCastle等库的操作
Cipher所需参数,包括Key、Random、IV等信息
非对称加密算法
对称加密算法
在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。
收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
非对称解密器接口,提供:
从bytes解密
从Hex(16进制)解密
从Base64解密
对称解密器接口,提供:
从bytes解密
从Hex(16进制)解密
从Base64解密
DES加密算法实现
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法
Java中默认实现为:DES/ECB/PKCS5Padding
数据加密标准,速度较快,适用于加密大量数据的场合
摘要算法
注意:此对象实例化后为非线程安全!
ECIES(集成加密方案,elliptic curve integrate encrypt scheme)
详细介绍见:https://blog.csdn.net/baidu_26954729/article/details/90437344
此算法必须引入Bouncy Castle库
非对称加密器接口,提供:
加密为bytes
加密为Hex(16进制)
加密为Base64
对称加密器接口,提供:
加密为bytes
加密为Hex(16进制)
加密为Base64
加解密服务提供
FPE(Format Preserving Encryption)实现,支持FF1和FF3-1模式。
相关介绍见:https://anquan.baidu.com/article/193
FPE模式
FPE包括两种模式:FF1和FF3(FF2弃用),核心均为Feistel网络结构。
HMAC摘要算法
HMAC,全称为“Hash Message Authentication Code”,中文名“散列消息鉴别码”
主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
一般的,消息鉴别码用于验证传输于两个共 同享有一个密钥的单位之间的消息。
HMAC 可以与任何迭代散列函数捆绑使用。MD5 和 SHA-1 就是这种散列函数。HMAC 还可以使用一个用于计算和确认消息鉴别值的密钥。
注意:此对象实例化后为非线程安全!
全局单例的
Provider对象
在此类加载时,通过SPI方式查找用户引入的加密库,查找对应的Provider实现,然后全局创建唯一的BouncyCastleProvider对象
用户依旧可以通过Holder.setUseCustomProvider(boolean) 方法选择是否使用自定义的Provider。HMAC-based one-time passwords (HOTP) 基于HMAC算法一次性密码生成器,
规范见:RFC 4226
提供
Cipher的方法包装JCE的
AlgorithmParameterSpec 参数包装JDK提供的的MAC算法实现引擎,使用
Mac 实现摘要
当引入BouncyCastle库时自动使用其作为Provider密钥工具
密钥类型
MAC(Message Authentication Code)算法引擎
MAC摘要算法(此类兼容和JCE的
javax.crypto.Mac对象和BC库的org.bouncycastle.crypto.Mac对象)
MAC,全称为“Message Authentication Code”,中文名“消息鉴别码”
主要是利用指定算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
一般的,消息鉴别码用于验证传输于两个共同享有一个密钥的单位之间的消息。
注意:此对象实例化后为非线程安全!Mac 简单工厂类MD5算法
补码方式
补码方式是在分组密码中,当明文长度不是分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组的长度。
PBKDF2应用一个伪随机函数以导出密钥,PBKDF2简单而言就是将salted hash进行多次重复计算。
参考:https://blog.csdn.net/huoji555/article/details/83659687
高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES是一个使用128为分组块的分组加密算法,分组块和128、192或256位的密钥一起作为输入,
对4×4的字节数组上进行操作 众所周之AES是种十分高效的算法,尤其在8位架构中,这源于它面向字节的设计
AES 适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)
达到十亿量级
系统中内置的策略映射
注解和实现之间映射
RSA公钥/私钥/签名加密解密
RSA 加密解密算法
加盐值魔数
用于在OpenSSL生成的密文中,提取加盐值等相关信息
OpenSSL中加盐解析器
参考:
签名包装,
Signature 包装类国密SM2非对称算法实现,基于BC库
SM2算法只支持公钥加密,私钥解密
参考:https://blog.csdn.net/pridas/article/details/86118774
RSA 加密解密算法
国密SM3杂凑(摘要)算法
国密对称堆成加密算法SM4实现
SM4算法的MAC引擎实现
高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES是一个使用128为分组块的分组加密算法,分组块和128、192或256位的密钥一起作为输入,
对4×4的字节数组上进行操作 众所周之AES是种十分高效的算法,尤其在8位架构中,这源于它面向字节的设计
AES 适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)
达到十亿量级
三重数据加密算法(英语:Triple Data Encryption Algorithm,缩写为TDEA,Triple DEA),或称3DES(Triple DES)
使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。
如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
Java中默认实现为:DESede/ECB/PKCS5Padding
TEA(Corrected Block Tiny Encryption Algorithm)算法实现
来自:https://github.com/xxtea/xxtea-java
time-based one-time passwords (TOTP) 基于时间戳算法的一次性密码生成器
维吉尼亚密码实现。
人们在恺撒移位密码的基础上扩展出多表密码,称为维吉尼亚密码。
算法实现来自:https://github.com/zhaorenjie110/SymmetricEncryptionAndDecryption
祖冲之算法集(ZUC算法)实现,基于BouncyCastle实现。