package com.sunyard.inf.cryption; public interface SydASYMApi { /** * 非对称加解密接口 */ /** * 用指定的 SM2 公钥对指定的密文数据进行加密。 * * @param publicKey 公钥钥串,DER 编码,HEX 格式。 * @param pOrgData 加密的数据。 * @return 加密的数据 base64 编码。 */ String SM2Encrypt( byte[] publicKey, byte[] pOrgData ); /** * 用指定的 SM2 公钥对指定的密文数据进行加密。 * * @param publicKey 公钥钥串,DER 编码,HEX 格式。 * @param pOrgData 加密的数据。 * @return 加密的数据 der 编码。 */ byte[] SYD_SM2_Encrypt(byte[] publicKey, byte[] pOrgData); /** * 用指定的 SM2 公钥对指定的密文数据进行加密。 * 输出的sm2密文结构为C1C2C3格式 * @param publicKey 公钥钥串,DER 编码,HEX 格式。 * @param pOrgData 加密的数据。 * @return 加密的数据 base64 编码。 */ String SM2EncryptOrder(byte[] publicKey, byte[] pOrgData); /** * 通过使用者 ID 所对应的私钥对指定的密文数据进行解密。 * * @param userId 使用者的 ID,最大长度为 16 位数字,右对齐。 * @param pEnData 加密的数据,base64 编码。 * @return 明文数据。 */ byte[] SM2DecryptC(String userId, String pEnData); /** * 使用外部私钥解密 * @param sk LMK下加密的私钥 * @param enData 密文数据(base64 编码) * @return 解密结果 */ byte[] SM2Decrypt(byte[] sk, String enData); /** * 使用外部私钥解密 * @param sk LMK下加密的私钥 * @param enData 密文数据(DER 编码) * @return 解密结果 */ byte[] SYD_SM2_Decrypt(byte[] sk, byte[] enData); /** * 通过使用者 ID 所对应的私钥对指定的密文数据进行解密。 * 输入的sm2密文结构为C1C2C3格式 * @param userId 使用者的 ID,最大长度为 16 位数字,右对齐。 * @param enData 加密的数据,base64 编码。 * @param keyType 密钥类型,0:签名证书, 1:加密证书。 * @return 明文数据。 */ byte[] SM2DecryptOrder(String userId, String enData, int keyType); /** * 用指定的 RSA 私钥对指定的密文数据进行加密。 * * @param publicKey 私钥串,DER 编码,HEX 格式。 * @param pOrgData 加密的数据。 * @return 加密的数据 base64 编码。 */ String RSAEncrypt( String publicKey, byte[] pOrgData ); /** * 通过使用者 ID 所对应的私钥对指定的密文数据进行解密。 * * @param userId 使用者的 ID,最大长度为 16 位数字,右对齐。 * @param pEnData 加密的数据,base64 编码。 * @return 明文数据。 */ byte[] RSADecryptC( String userId, String pEnData ) throws Exception; /** * 使用外部私钥解密 * @param sk * @param enData * @return */ public byte[] RSADecrypt(String sk, String enData) throws Exception; /** * 非对称公钥加密 * @param alg 算法标识,0 = RSA 1 = SM2 * @param pk 公钥的 DER 编码 * @param data 数据 * @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT). */ public byte[] encryptByPk(int alg, String pk, byte[] data); /** * 非对称私钥解密 * @param alg 算法标识:0 = RSA 1 = SM2 * @param sk 私钥值,LMK下加密的私钥 * @param data 密文数据(DER 编码) * @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT) */ public byte[] decryptBySk(int alg, String sk, byte[] data); /** * 非对称私钥解密 * @param alg 算法标识:0 = RSA 1 = SM2 * @param userId 16位机构号 * @param data 密文数据(DER 编码) * @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT). */ public byte[] decryptBySkC(int alg, String userId, byte[] data); }