合并
# Conflicts: # pom.xml # src/main/java/com/sunyard/SydApiException.java # src/main/java/racal/sunyard/main/SydApi4j.java # src/test/java/com/sunyard/sydapi/test/TestAllMethods.java
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
package com.sunyard.inf.cryption;
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
/**
|
||||
* 对称加解密接口
|
||||
*/
|
||||
public interface SydSYMApi {
|
||||
|
||||
/**
|
||||
* E0 指令复合接口
|
||||
* @param isEn 指定加解密,true为加密,false为解密
|
||||
* @param nAlg 密钥模式,当isEn为true时,默认为SM4加密,0为DES加密,1为AES256 加密。当isEn为false时,默认为SM4解密,0为DES解密,1为AES256解密
|
||||
* @param seesionKey 密钥
|
||||
* @param roundmod 轮模式,密钥加密模式:1=ECB,2=CBC,3=CFB,4=OFB
|
||||
* @param fullMode 填充模式:0为饥饿模式,1为贪婪模式
|
||||
* @param pInData 消息数据
|
||||
* @param iv IV
|
||||
* @param block 消息块号
|
||||
* @return
|
||||
* iv: IV 数据域
|
||||
* msg_all: 消息数据
|
||||
*/
|
||||
RetWrap SYMEnDeData(Boolean isEn, int nAlg, String seesionKey, int roundmod, int fullMode, byte[] pInData, byte[] iv, int block);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行加密处理。填充模式为1
|
||||
*
|
||||
* @param nAlg 算法标识., 0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param pINdata 要加密的报文明文。必须是 8 或16 的倍数。
|
||||
* @return 输出的报文密文, 长度为报文明文 + 16
|
||||
*/
|
||||
byte[] SYMEncryptData(int nAlg, String seesionKey, byte[] pINdata);
|
||||
|
||||
/**
|
||||
* 对指定报文数据进行SM4加密
|
||||
* @param type 密钥类型。0: ZEK,1: TEK
|
||||
* @param userId 生成密钥时的机构号。
|
||||
* @param index 密钥索引
|
||||
* @param data 待加密的数据
|
||||
* @return
|
||||
*/
|
||||
byte[] SYMSM4EncDataByIndex(int type, String userId, String index, byte[] data);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行加密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
|
||||
* @param pINdata 要加密的报文明文。必须是 8 或16 的倍数。
|
||||
* @return 输出的报文密文, 长度为报文明文 + 16
|
||||
*/
|
||||
byte[] SYMEncryptData(int nAlg, String seesionKey, int fullmode, byte[] pINdata);
|
||||
|
||||
|
||||
// List<byte[]> SYMEncryptDecryptBatchData(int nAlg, String[] seesionKey, int fullmode, List<byte[]> pINdata);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行加密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param pInData 要加密的报文明文。必须是 8 或16 的倍数。
|
||||
* @return 输出的报文密文, 长度为报文明文 + 16
|
||||
*/
|
||||
byte[] SYMEncryptData_nofill(int nAlg, String seesionKey, byte[] pInData);
|
||||
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。填充模式为1
|
||||
*
|
||||
* @param nAlg 算法标识.0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。
|
||||
* @return 输出的报文明文。
|
||||
*/
|
||||
byte[] SYMDecryptData(int nAlg, String seesionKey, byte[] pINdata);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
|
||||
* @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。
|
||||
* @return 输出的报文明文。
|
||||
*/
|
||||
byte[] SYMDecryptData(int nAlg, String seesionKey, int fullmode, byte[] pINdata);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param pInData 要解密的报文密文。长度必须是8 或16 的倍数。
|
||||
* @return 输出的报文明文。
|
||||
*/
|
||||
byte[] SYMDecryptData_nofill(int nAlg, String seesionKey, byte[] pInData);
|
||||
|
||||
/**
|
||||
* 加解密数据(E1)
|
||||
* @param nAlg 密钥模式,默认为SM4解密,0:DES加密,1:AES256 解密
|
||||
* @param seesionKey 密钥
|
||||
* @param inputPath 输入消息数据的文件路径
|
||||
* @param outputPath 输出消息数据的文件路径
|
||||
* @return
|
||||
*/
|
||||
boolean SYMDecryptDataWithFile(int nAlg, String seesionKey, String inputPath, String outputPath) throws Exception;
|
||||
|
||||
/**
|
||||
* 使用SM4算法进行加密,其中加密模式为CBC,
|
||||
* Ⅳ使用缺省值0X 00000000000000000000000000000000,
|
||||
* 补位模式为 PKCS5 PADDING 。
|
||||
* @param keyType 密钥类型 0: ZEK,1: TEK
|
||||
* @param key 密钥
|
||||
* @param inType 输入消息类型 0:二进制 1:扩展十六进制
|
||||
* @param outType 输出消息类型 0:二进制 1:扩展十六进制
|
||||
* @param inFilePath 需要加密的数据文件所在的路径
|
||||
* @param outFilePath 加密后的密文数据将要保存的文件路径
|
||||
* @return 加密是否成功。false为失败,true为成功
|
||||
*/
|
||||
boolean SM4EncryptFileDataCBC(int keyType, String key, int inType, int outType, String inFilePath, String outFilePath);
|
||||
|
||||
/**
|
||||
* 使用SM4算法进行加密,其中加密模式为CBC,
|
||||
* Ⅳ使用缺省值0X 00000000000000000000000000000000,
|
||||
* 补位模式为 PKCS5 PADDING 。
|
||||
* @param keyType 密钥类型 0: ZEK,1: TEK
|
||||
* @param key 密钥
|
||||
* @param inType 输入消息类型 0:二进制 1:扩展十六进制
|
||||
* @param outType 输出消息类型 0:二进制 1:扩展十六进制
|
||||
* @param msg 消息数据
|
||||
* @return 输出的报文密文
|
||||
*/
|
||||
byte[] SM4EncryptDataCBC(int keyType, String key, int inType, int outType, byte[] msg);
|
||||
|
||||
/**
|
||||
* 使用SM4算法进行解密,其中加密模式为CBC,
|
||||
* Ⅳ使用缺省值0X 00000000000000000000000000000000,
|
||||
* 补位模式为 PKCS5 PADDING 。
|
||||
* @param keyType 密钥类型 0: ZEK,1: TEK
|
||||
* @param key 密钥
|
||||
* @param inType 输入消息类型 0:二进制 1:扩展十六进制
|
||||
* @param outType 输出消息类型 0:二进制 1:扩展十六进制
|
||||
* @param inFilePath 加密后的密文数据将要保存的文件路径
|
||||
* @param outFilePath 解密后的数据文件所在的路径
|
||||
* @return 解密是否成功。false为失败,true为成功
|
||||
*/
|
||||
boolean SM4DecryptFileDataCBC(int keyType, String key, int inType, int outType, String inFilePath, String outFilePath) throws UnsupportedEncodingException;
|
||||
|
||||
/**
|
||||
* 使用SM4算法进行解密,其中加密模式为CBC,
|
||||
* Ⅳ使用缺省值0X 00000000000000000000000000000000,
|
||||
* 补位模式为 PKCS5 PADDING 。
|
||||
* @param keyType 密钥类型 0: ZEK,1: TEK
|
||||
* @param key 密钥
|
||||
* @param inType 输入消息类型 0:二进制 1:扩展十六进制
|
||||
* @param outType 输出消息类型 0:二进制 1:扩展十六进制
|
||||
* @param msg 加密后的消息数据
|
||||
* @return 输出的报文明文
|
||||
*/
|
||||
byte[] SM4DecryptDataCBC(int keyType, String key, int inType, int outType, byte[] msg);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行加密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param pINdata 要加密的报文明文。必须是 8 或16 的倍数。
|
||||
* @return 输出的报文密文, 长度为报文明文 + 16
|
||||
*/
|
||||
byte[] SYMEncryptDataCBC(int nAlg, String seesionKey, byte[] pINdata);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行加密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
|
||||
* @param pInData 要加密的报文明文。必须是 8 或16 的倍数。
|
||||
* @return 输出的报文密文, 长度为报文明文 + 16
|
||||
*/
|
||||
byte[] SYMEncryptDataCBC(int nAlg, String seesionKey, int fullmode, byte[] pInData);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。
|
||||
* @return 输出的报文明文。
|
||||
*/
|
||||
byte[] SYMDecryptDataCBC(int nAlg, String seesionKey, byte[] pINdata);
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。
|
||||
*
|
||||
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
|
||||
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
|
||||
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
|
||||
* @param pInData 要解密的报文密文。长度必须是8 或16 的倍数。
|
||||
* @return 输出的报文明文。
|
||||
*/
|
||||
byte[] SYMDecryptDataCBC(int nAlg, String seesionKey, int fullmode, byte[] pInData);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。
|
||||
*
|
||||
* @param srcKey 源秘钥.十六进制字符串。
|
||||
* @param desKey 目的秘钥.十六进制字符串。
|
||||
* @param sca 源算法SCA.Int类型。
|
||||
* @param sPin 源PIN块.十六进制字符串。
|
||||
* @param primaryAccount 主账号.十六进制字符串。
|
||||
* @return 目的Pin块。
|
||||
*/
|
||||
byte[] transPinFrOneKeyToAno(String srcKey, String desKey, int sca, String sPin, String primaryAccount);
|
||||
|
||||
|
||||
/**
|
||||
* 用一把DEK密钥加密数据, 报文总长度不大于8192
|
||||
*
|
||||
* @param alg 加密算法
|
||||
* @param DEK DEK密钥
|
||||
* @param infoData 数据
|
||||
* @param vector 初始向量数据 可选项,当加密模式为CBC,CFB或OFB时才显示此项
|
||||
* @param disperseAlg 分散算法
|
||||
* @return 密文数据
|
||||
*/
|
||||
byte[] SYD_Encrypt_Data(int alg, String DEK, byte[] infoData, byte[] vector, int disperseAlg, byte[] factor);
|
||||
|
||||
|
||||
/**
|
||||
* 用DEK密钥解密数据, 报文总长度不大于8192
|
||||
*
|
||||
* @param alg 解密算法
|
||||
* @param DEK DEK密钥
|
||||
* @param infoData 数据密文
|
||||
* @param vector 初始向量数据 可选项,当加密模式为CBC,CFB或OFB时才显示此项
|
||||
* @param disperseAlg 分散算法
|
||||
* @return 解密后的明文数据
|
||||
*/
|
||||
byte[] SYD_Decrypt_Data(int alg, String DEK, byte[] infoData, byte[] vector, int disperseAlg, byte[] factor);
|
||||
|
||||
|
||||
/**
|
||||
* 对于给定的数据生成一个MAC
|
||||
*
|
||||
* @param key LMK对(16-17)下加密的TAK
|
||||
* @param infoData 生成MAC的数据
|
||||
* @param IV
|
||||
* @param disperseNum 指定对根密钥分散的次数(1-3次)
|
||||
* @param disperseAlg 分散算法
|
||||
* @return 所计算出的MAC
|
||||
*/
|
||||
byte[] SYD_MAC_Data(String key, String infoData, byte[] factor, String IV, int disperseNum, int disperseAlg);
|
||||
|
||||
/**
|
||||
* 对称加密数据
|
||||
* @param key 索引地址,指示用户密钥存储区的27位地址
|
||||
* @param intPutData 消息数据
|
||||
* @return
|
||||
* iv: IV 数据域
|
||||
* msg_all: 消息数据
|
||||
*/
|
||||
public String SYMEncrytByKeyIndex( String key, String intPutData);
|
||||
|
||||
/**
|
||||
* 对称解密数据
|
||||
* @param key 索引地址,指示用户密钥存储区的27位地址
|
||||
* @param intPutData 消息数据
|
||||
* @return 消息数据
|
||||
*/
|
||||
public String SYMDecrytByKeyIndex(String key,String intPutData);
|
||||
|
||||
//通过索引读取对称秘钥
|
||||
RetWrap readKey(String index);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user