数据验证和数据加解密竟然能这样统一操作

时间:2025-04-11 16:02:39

在程序开发过程中,经常会遇到需要进行数据校验或者数据加解密的操作,传统的工具包中需要针对不同的校验或加解密算法调整开发代码,现在有一个全新的数据校验、数据加解密工具,能够使用统一接口进行数据校验和加解密的操作,还能够支持国密算法,大家可以一起来看一看。

日常经常遇到的各种算法

软件开发过程中经常会使用到各种算法,用来验证数据、加密解密数据,常用的算法有很多种,每种算法都有其特点和适用场景,在程序开发过程中可以根据不同的场景来选择合适的算法。

以下是一些常见的算法介绍:

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