在程序开发过程中,经常会遇到需要进行数据校验或者数据加解密的操作,传统的工具包中需要针对不同的校验或加解密算法调整开发代码,现在有一个全新的数据校验、数据加解密工具,能够使用统一接口进行数据校验和加解密的操作,还能够支持国密算法,大家可以一起来看一看。
日常经常遇到的各种算法
软件开发过程中经常会使用到各种算法,用来验证数据、加密解密数据,常用的算法有很多种,每种算法都有其特点和适用场景,在程序开发过程中可以根据不同的场景来选择合适的算法。
以下是一些常见的算法介绍:
1.对称密钥算法
对称密钥算法(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。 对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。
大多数现代对称密钥算法似乎能够抵抗后量子密码学的威胁。量子计算机将指数级地提高这些密码的解码速度;值得注意的是,Grover算法将传统暴力破解所需时间缩短至平方根,尽管可以通过将密钥长度加倍来弥补这些漏洞。例如,128位AES密码将无法抵御此类攻击,因为它会将测试所有可能迭代所需的时间从超过1000京年(1019年)减少到大约六个月。相比之下,量子计算机解码256位AES密码所需的时间仍然与传统计算机解码128位AES密码所需的时间相同。因此,AES-256被认为是“抗量子”(英语:quantum resistant)的。
常见的对称加密算法有:AES(Advanced Encryption Standard)、DES(Data Encryption Standard)、Triple DES(3DES)、Blowfish、RC4(Rivest Cipher 4)等。
2.非对称密钥算法
公开密钥密码学(英语:Public-key cryptography)也称非对称式密码学(英语:Asymmetric cryptography)是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
基于公开密钥加密的特性,它还能提供数字签名的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。
公开密钥基础建设透过信任数字证书认证机构的根证书、及其使用公开密钥加密作数字签名核发的公开密钥认证,形成信任链架构,已在TLS实现并在万维网的HTTP以HTTPS、在电子邮件的SMTP以SMTPS或STARTTLS引入。
另一方面,信任网络则采用去中心化的概念,取代了依赖数字证书认证机构的公钥基础设施,因为每一张电子证书在信任链中最终只由一个根证书授权信任,信任网络的公钥则可以累积多个用户的信任。PGP就是其中一个例子。
常见的非对称密钥算法有:RSA、ECC(Elliptic Curve Cryptography)。
3.消息摘要算法
消息摘要算法是密码学算法中非常重要的一个分支,它能够把任意长度的输入数据计算产生一个长度固定的伪随机结果,并且消息摘要算法不需要密钥,产生的结果无法逆向获取数据原文,经常用于数据签名以及验证数据或文件的完整性。
常见的消息摘要算法有:CRC(循环冗余校验)、MD系列算法(包括MD2、MD4、MD5)、SHA算法(包括SHA-1、SHA-2系列、SHA-3系列)、MAC算法(包括HmacMD5、HmacSHA等)。
近年来由于量子计算机的快速发展,MD系列算法和SHA1算法已经无法抵御量子计算机的暴力破解,因此已经慢慢被SHA-2系列算法取代。
使用统一接口的数据校验、数据加解密工具
工具包中提供了统一的接口 org.nervousync.security.api.SecureAdapter,程序开发人员可以通过此接口进行数据的填充操作,并获取计算结果和签名验证结果。
计算数据:
程序开发人员可以调用 org.nervousync.security.api.SecureAdapter 实例对象的 append 方法进行数据计算,支持字符串、二进制数据、二进制缓冲区等不同参数类型。
填充字符串的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
strIn | String | 需要计算的字符串 |
填充二进制数据的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
dataBytes | byte数组 | 需要计算的二进制字节数组 |
position | int | 起始坐标值(可选参数) |
length | int | 计算的数据长度(可选参数) |
填充二进制缓冲区的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
inBuffer | ByteBuffer | 需要计算的二进制缓冲区实例对象 |
获取计算结果:
程序开发人员可以调用 org.nervousync.security.api.SecureAdapter 实例对象的 finish 方法获取数据计算结果,返回值为计算结果的二进制字节数组,支持字符串、二进制数据、二进制缓冲区等不同参数类型。
填充字符串的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
strIn | String | 需要计算的字符串 |
填充二进制数据的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
dataBytes | byte数组 | 需要计算的二进制字节数组 |
position | int | 起始坐标值(可选参数) |
length | int | 计算的数据长度(可选参数) |
填充二进制缓冲区的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
inBuffer | ByteBuffer | 需要计算的二进制缓冲区实例对象 |
验证签名:
程序开发人员可以调用 org.nervousync.security.api.SecureAdapter 实例对象的 verify 方法获取验证结果,传入的参数为数字签名的二进制数组,返回值为布尔值类型的验证结果。
清除已计算的数据:
程序开发人员可以调用 org.nervousync.security.api.SecureAdapter 实例对象的 reset 方法清除已计算的数据并重置 org.nervousync.security.api.SecureAdapter 实例对象。
使用方法:
1.依赖引用
最新版本为1.2.2,使用时请替换${version}为对应的版本号 Maven:
<dependency>
<groupId>org.nervousync</groupId>
<artifactId>utils-jdk11</artifactId>
<version>${version}</version>
</dependency>
Gradle:
Manual: compileOnly group: 'org.nervousync', name: 'utils-jdk11', version: '${version}'
Short: compileOnly 'org.nervousync:utils-jdk11:${version}'
SBT:
libraryDependencies += "org.nervousync" % "utils-jdk11" % "${version}" % "provided"
Ivy:
<dependency org="org.nervousync" name="utils-jdk11" rev="${version}"/>
2.CRC操作
默认支持的CRC算法有:CRC-16/ISO-IEC-14443-3-A,CRC-32/JAMCRC,CRC-4/INTERLAKEN,CRC-16/TELEDISK,CRC-32/MPEG-2,CRC-16/GSM,CRC-6/GSM,CRC-7/UMTS,CRC-32/BZIP2,CRC-8/I-CODE,CRC-16/IBM-SDLC,CRC-16/LJ1200,CRC-10/ATM,CRC-8/NRSC-5,CRC-5/USB,CRC-7/ROHC,CRC-12/UMTS,CRC-8/BLUETOOTH,CRC-14/GSM,CRC-8/SMBUS,CRC-8/TECH-3250,CRC-5/G-704,CRC-16/MODBUS,CRC-12/DECT,CRC-7/MMC,CRC-16/CMS,CRC-24/FLEXRAY-A,CRC-24/FLEXRAY-B,CRC-32/ISO-HDLC,CRC-21/CAN-FD,CRC-8/LTE,CRC-15/CAN,CRC-24/LTE-A,CRC-30/CDMA,CRC-3/GSM,CRC-24/LTE-B,CRC-24/OPENPGP,CRC-12/CDMA2000,CRC-16/MAXIM-DOW,CRC-16/XMODEM,CRC-6/G-704,CRC-24/OS-9,CRC-16/DNP,CRC-32/AIXM,CRC-10/CDMA2000,CRC-6/CDMA2000-A,CRC-6/CDMA2000-B,CRC-16/TMS37157,CRC-16/UMTS,CRC-32/XFER,CRC-8/ROHC,CRC-16/DECT-R,CRC-8/WCDMA,CRC-8/DVB-S2,CRC-15/MPT1327,CRC-16/DECT-X,CRC-6/DARC,CRC-16/DDS-110,CRC-32/ISCSI,CRC-16/USB,CRC-8/MIFARE-MAD,CRC-8/AUTOSAR,CRC-16/KERMIT,CRC-16/IBM-3740,CRC-4/G-704,CRC-16/RIELLO,CRC-16/EN-13757,CRC-16/NRSC-5,CRC-14/DARC,CRC-31/PHILIPS,CRC-5/EPC-C1G2,CRC-32/BASE91-D,CRC-16/ARC,CRC-16/MCRF4XX,CRC-16/T10-DIF,CRC-24/INTERLAKEN,CRC-3/ROHC,CRC-13/BBC,CRC-11/UMTS,CRC-16/SPI-FUJITSU,CRC-10/GSM,CRC-8/DARC,CRC-8/OPENSAFETY,CRC-12/GSM,CRC-32/CKSUM,CRC-16/PROFIBUS,CRC-8/GSM-B,CRC-8/GSM-A,CRC-8/SAE-J1850,CRC-8/CDMA2000,CRC-8/MAXIM-DOW,CRC-16/GENIBUS,CRC-8/I-432-1,CRC-17/CAN-FD,CRC-16/OPENSAFETY-B,CRC-32/CD-ROM-EDC,CRC-16/OPENSAFETY-A,CRC-32/AUTOSAR,CRC-16/CDMA2000,CRC-11/FLEXRAY,CRC-24/BLE
获取已注册的CRC算法:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 registeredCRC 静态方法获取已经注册的CRC算法名称列表,返回值为 java.util.List
注册新的CRC算法:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 registerConfig 静态方法注册新的CRC算法。
registerConfig方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
algorithm | 字符串 | CRC算法名称 |
crcConfig | org.nervousync.security.digest.config.CRCConfig | CRC算法配置信息实例对象 |
获取CRC算法配置信息:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 crcConfig 静态方法获取注册的CRC算法配置信息。
crcConfig方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
algorithm | 字符串 | CRC算法名称 |
获取计算CRC的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 CRC 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
CRC方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
algorithm | 字符串 | CRC算法名称 |
转换CRC结果二进制数据为字符串:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 CRCResult 静态方法将CRC结果的二进制数据转换为字符串。
CRCResult方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
algorithm | 字符串 | CRC算法名称 |
result | 二进制数组 | CRC结果的二进制数据 |
3.MD5/HmacMD5操作
直接计算MD5值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 MD5 静态方法获取计算结果,返回值为计算结果的二进制数据。
MD5方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算MD5值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算MD5的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 MD5 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
直接计算HmacMD5值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacMD5 静态方法获取计算结果,返回值为计算结果的二进制数据。
HmacMD5方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
source | Java.lang.Object | 需要计算MD5值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算HmacMD5的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacMD5 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacMD5方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
4.SHA1/HmacSHA1操作
直接计算SHA1值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SHA1 静态方法获取计算结果,返回值为计算结果的二进制数据。
SHA1方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算SHA1值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算SHA1的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 SHA1 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
直接计算HmacSHA1值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSHA1 静态方法获取计算结果,返回值为计算结果的二进制数据。
HmacSHA1方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
source | Java.lang.Object | 需要计算HmacSHA1值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算HmacSHA1的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSHA1 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacSHA1方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
5.SHA2/HmacSHA2操作
SHA2系列的算法:SHA224、SHA256、SHA384、SHA512、SHA512_224、SHA512_256
直接计算SHA2值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SHA224、SHA256、SHA384、SHA512、SHA512_224、SHA512_256 静态方法获取计算结果,返回值为计算结果的二进制数据。
SHA2方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算SHA2值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算SHA2的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 SHA224、SHA256、SHA384、SHA512、SHA512_224、SHA512_256 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacSHA2系列的算法:HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512、HmacSHA512_224、HmacSHA512_256
直接计算HmacSHA2值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512、HmacSHA512_224、HmacSHA512_256 静态方法获取计算结果,返回值为计算结果的二进制数据。
HmacSHA2方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
source | Java.lang.Object | 需要计算HmacSHA2值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算HmacSHA2的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512、HmacSHA512_224、HmacSHA512_256 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacSHA2方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
6.SHA3/HmacSHA3操作
SHA3系列的算法:SHA3_224、SHA3_256、SHA3_384、SHA3_512
直接计算SHA3值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SHA3_224、SHA3_256、SHA3_384、SHA3_512 静态方法获取计算结果,返回值为计算结果的二进制数据。
SHA3方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算SHA3值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算SHA3的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 SHA3_224、SHA3_256、SHA3_384、SHA3_512 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacSHA3系列的算法:HmacSHA3_224、HmacSHA3_256、HmacSHA3_384、HmacSHA3_512
直接计算HmacSHA3值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSHA3_224、HmacSHA3_256、HmacSHA3_384、HmacSHA3_512 静态方法获取计算结果,返回值为计算结果的二进制数据。
HmacSHA3方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
source | Java.lang.Object | 需要计算HmacSHA3值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算HmacSHA3的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSHA3_224、HmacSHA3_256、HmacSHA3_384、HmacSHA3_512 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacSHA3方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
7.SM3/HmacSM3操作
直接计算SM3值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM3 静态方法获取计算结果,返回值为计算结果的二进制数据。
SM3方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算SM3值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算SM3的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 SM3 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
直接计算HmacSM3值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSM3 静态方法获取计算结果,返回值为计算结果的二进制数据。
HmacSM3方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
source | Java.lang.Object | 需要计算HmacSM3值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算HmacSM3的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 HmacSM3 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
HmacSM3方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keyBytes | 二进制数组 | HMAC密钥字节数组 |
8.SHAKE操作
直接计算SHAKE128值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SHAKE128 静态方法获取计算结果,返回值为计算结果的二进制数据。
SHAKE128方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算SHAKE128值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算SHAKE128的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 SHAKE128 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
直接计算SHAKE256值:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SHAKE256 静态方法获取计算结果,返回值为计算结果的二进制数据。
SHAKE256方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
source | Java.lang.Object | 需要计算SHAKE256值的实例对象,如果类型为File,则会自动读取文件的二进制数据计算 |
获取计算SHAKE256的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 中无参数的 SHAKE128 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
9.Blowfish操作
生成随机密钥:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 BlowfishKey 静态方法来生成一个随机密钥,返回值类型为二进制数组。
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 BlowfishEncryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
BlowfishEncryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS7Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 BlowfishDecryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
BlowfishDecryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS7Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
10.DES操作
生成随机密钥:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 DESKey 静态方法来生成一个随机密钥,返回值类型为二进制数组。
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 DESEncryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
DESEncryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 DESDecryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
DESDecryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
11.Triple DES操作
生成随机密钥:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 TripleDESKey 静态方法来生成一个随机密钥,返回值类型为二进制数组。
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 TripleDESEncryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
TripleDESEncryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 TripleDESDecryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
TripleDESDecryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
12.SM4操作
生成随机密钥:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM4Key 静态方法来生成一个随机密钥,返回值类型为二进制数组。
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM4Encryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
SM4Encryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
randomAlgorithm | 字符串 | 随机数算法,默认值:SHA1PRNG |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM4Decryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
SM4Decryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
randomAlgorithm | 字符串 | 随机数算法,默认值:SHA1PRNG |
13.RC操作
包括RC2、RC4、RC5、RC6,请根据需要选择对应的算法,并替换方法名中的{x}
生成随机密钥:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RC{x}Key 静态方法来生成一个随机密钥,返回值类型为二进制数组。
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RC{x}Encryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
RC{x}Encryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RC{x}Decryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
RC{x}Decryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
14.AES操作
生成随机密钥:
支持AES128、AES192、AES256不同长度的密钥生成,请根据需要选择对应的算法,并替换方法名中的{x}
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 AES{x}Key 静态方法来生成一个随机密钥,返回值类型为二进制数组。
AES{x}Key方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
randomAlgorithm | 字符串 | 随机数算法,默认值:SHA1PRNG |
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 AESEncryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
AESEncryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 AESDecryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
AESDecryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
mode | 字符串 | 分组密码模式,默认值:CBC |
padding | 字符串 | 数据填充模式,默认值:PKCS5Padding |
keyBytes | 二进制数组 | 密钥字节数组 |
15.RSA操作
生成密钥对:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RSAKeyPair 静态方法来生成一个随机密钥对,返回值类型为 java.security.KeyPair。
RSAKeyPair方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
keySize | int | 密钥长度,默认值:1024 |
randomAlgorithm | 字符串 | 随机数算法,默认值:SHA1PRNG |
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RSAEncryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
RSAEncryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
padding | 字符串 | 数据填充模式,默认值:PKCS1Padding |
publicKey | java.security.Key | 公钥实例对象 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RSADecryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
RSADecryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
padding | 字符串 | 数据填充模式,默认值:PKCS1Padding |
privateKey | java.security.Key | 私钥实例对象 |
获取数字签名计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RSASigner 静态方法获取数字签名计算器,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
RSASigner方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
algorithm | 字符串 | 签名算法,默认值:SHA256withRSA |
privateKey | java.security.PrivateKey | 私钥实例对象 |
获取数字签名验证器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 RSAVerifier 静态方法获取数字签名验证器,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
RSAVerifier方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
algorithm | 字符串 | 签名算法,默认值:SHA256withRSA |
publicKey | java.security.PublicKey | 公钥实例对象 |
获取密钥长度:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 rsaKeySize 静态方法获取密钥长度。
rsaKeySize方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
key | java.security.Key | 密钥实例对象 |
16.SM2操作
生成密钥对:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM2KeyPair 静态方法来生成一个随机密钥对,返回值类型为 java.security.KeyPair。
SM2KeyPair方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
randomAlgorithm | 字符串 | 随机数算法,默认值:SHA1PRNG |
获取加密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM2Encryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
SM2Encryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
publicKey | java.security.PublicKey | 公钥实例对象 |
获取解密计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM2Decryptor 静态方法获取计算适配器实例对象,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
SM2Decryptor方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
privateKey | java.security.PrivateKey | 私钥实例对象 |
获取数字签名计算器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM2Signer 静态方法获取数字签名计算器,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
SM2Signer方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
privateKey | java.security.PrivateKey | 私钥实例对象 |
获取数字签名验证器的适配器实例对象:
程序开发人员可以调用 org.nervousync.utils.SecurityUtils 的 SM2Verifier 静态方法获取数字签名验证器,返回值为 org.nervousync.security.api.SecureAdapter 实例对象。
SM2Verifier方法的参数:
参数名 | 数据类型 | 备注 |
---|---|---|
publicKey | java.security.PublicKey | 公钥实例对象 |
数据结果转换:
由于SM2计算结果的数据排列有两种,即C1C2C3和C1C3C2,工具包中提供了两个静态方法(C1C2C3toC1C3C2和C1C3C2toC1C2C3)用于这两种数据排列的转换,
版权信息
转载请注明出处:https://blog.51cto.com/commandos