本文档主要介绍了通过调用Java接口生成工作密钥和进行通用数据加解密的操作方法。
整体流程
初始化SDK。具体内容请参见
配置Java接口。具体内容请参见
初始化SDK
使用以下方法初始化SDK。hsmGeneralFinancehsm=hsmGeneralFinance.getInstance("./cacipher.ini");
调用Java接口生成工作密钥
调用以下Java接口生成工作密钥。hsm.genWorkKey(keyType,algFlag,keyIndex,keyLable);
返回值
返回两个值:
0号索引下:密钥在LMK下加密的密文。
1号索引下:密钥校验值。
抛出异常cn.tass.exceptions.TAException //接口自定义异常。
接口定义public String[] genWorkKey(String keyType,
char keyFlag,
int storeKeyIndex,
String storeKeyLabel)
throws cn.tass.exceptions.TAException
请求参数
参数名称
参数类型
参数描述
keyType
String
密钥类型。支持密钥类型编码和密钥类型名称两种格式。例如:ZEK/DEK可以传"00A"和"ZEK/DEK"两种格式。取值:
000:ZMK/KEK
001:ZPK
002:PVK/TPK/TMK
003:TAK
008:ZAK
009:BDK
00A:ZEK/DEK
00B:TEK
011:KMC
109:MK-AC/MDK
10C:HMAC
209:MK-SMI
309:MK-SMC
402:CVK
409:MK-DAK
509:MK-DN
algFlag
char
在LMK下加密的密钥密文标识。取值:
Z:单倍长DES密钥
X:双倍长3DES密钥
Y:三倍长3DES密钥
U:双倍长的3DES算法密钥
T:三倍长的3DES算法密钥
R:16字节SM4密钥
P:16字节SM1密钥
L:16字节AES密钥
M:AES-192算法密钥
N:AES-256算法密钥
KeyIndex
int
密钥存储索引。取值范围:1~2048。
KeyLabel
String
密钥存储标签。包含0~16个ASII字符。
说明 在云密码机内部存储密钥时标记密钥的标签说明。
请求示例keyType:00A
algFlag:R
keyIndex:1
KeyLabel:test
调用Java接口进行数据加密
调用以下Java接口进行数据加密。hsm.generalDataEnc(algType,keyType,sm4SymmKey,disperFactor,sessionType,sessionFactor,padFlag,inData,IV);
返回值
加密之后的密文数据。
抛出异常cn.tass.exceptions.TAException //接口自定义异常。
接口定义public byte[] generalDataEnc(int algType,
String keyType,
Object key,
String disperFactor,
Int sessionType,
String sessionFactor,
Int padFlag,
byte[] inData,
String IV)
throws cn.tass.exceptions.TAException
请求参数
参数名称
参数类型
参数描述
algType
int
加密算法模式。取值:
0:ECB模式加密
1:CBC模式加密
2:CFB模式加密
3:OFB模式加密
4:CTR模式加密(16字节分组长度)
keyType
String