# 非对称解密
对已加密数据进行私钥解密
# 一、请求说明
- 请求地址:http://IP:PORT/openapi/ces/v1/asymmetric/decrypt
- 服务接口名称(即公共参数method的值): asymmetric/decrypt
- 请求方式:POST
# 二、请求参数
| 名称 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| decryptType | CertSearchEnum | 是 | 解密方式 |
| decryptItemValue | String | 是 | 解密方式的值 |
| ciphertext | String | 是 | 待解密数据 |
| dataType | DataType | 是 | 待解密数据类型 (base64、hex) |
| decryptDataType | DataType | 是 | 解密后数据格式 (原文、原文base64 、原文hex) |
| keyType | KeypairTypeEnum | 否 | 解密类型 |
字段解释
CertSearchEnum 解密方式
| 类型字段 | 介绍 |
|---|---|
| CERT | 证书 |
| CERT_ID | 证书ID |
| KEY_INDEX | 密钥索引(选用密钥索引方式仅可使用拥有者不为证书的密钥索引) |
| SN_HEX | 证书序列号(十六进制格式) |
| SN_DEC | 证书序列号(十进制格式) |
| TN_HASH | 证书指纹 |
| CERT_CN | 证书CN项 |
| CERT_DN | 证书主题项 |
- DataType 数据类型介绍
| 字段 | 类型介绍 |
|---|---|
| BASE64 | 原文BASE64 |
| HEX | 原文Hex |
| ORIGINAL | 原文 |
- KeypairTypeEnum 解密类型
| 类型字段 | 介绍 |
|---|---|
| SIGN | 签名密钥对解密 |
| ENCRYPT | 加密密钥对解密 |
# 三、响应参数
| data 结果信息 | 类型 | 描述 |
|---|---|---|
| decryptData | String | 解密结果 |
| verification | Integer | 解密结果状态码 |
| message | String | 解密结果提示信息 |
- verification 返回码介绍
| 字段 | 状态码 | 状态介绍 |
|---|---|---|
| SUCCESS | 0 | 验证成功 |
| CERT_NOT_EXIST | 8 | 证书不存在 |
# 四、成功示例
JSON示例
{
"code":0,
"message":"success",
"requestId":"xxx",
"data":{
"verification":0,
"message":"success",
"decryptData":"123"
}
}
# 五、失败示例
JSON示例
{
"code": 10012,
"message": "App不存在",
"requestId":"xxx",
}
# 六、SDK请求示例
// 提供的URL
String url = "http://172.16.3.232:20501";
// 您的appKey
String appKey = "XXX";
// 您的appSecret
String appSecret = "XXX";
// 1.原客户端
PkiClient client = new PkiOkhttpClient(url, appKey, appSecret);
AsymmetricDecryptRequest request = new AsymmetricDecryptRequest();
String data = "MGwCIQDpONXxj9Dt/fp5wTEMRZF32jmHivvQGX2FN408/97z0gIgJwaJVwMnEBRaP0KghS2Gjf/k1tQhL8oj0pgKHHvEHBUEIBfYYQ2H6Sk4rauwjesOryWt4GylyovZ5k7rW17QLNmSBANN0aQ=";
//通过何种方式进行解密
request.setDecryptType(CertSearchEnum.CERT_ID);
// 解密依赖项的值
request.setDecryptItemValue("628cb99a51cfb422619db668");
// 解密依赖项的值
request.setCiphertext(data);
// 解密数据类型
request.setDataType(DataType.BASE64);
// 解密后数据类型
request.setDecryptDataType(DataType.BASE64);
// 用加密密钥 加密
request.setKeyType(KeypairTypeEnum.ENCRYPT);
try {
AsymmetricDecryptResponse response = client.execute(request);
// 后续业务
if (response.isSuccess()) {
AsymmetricDecryptResponse.Result result = response.getResult();
System.out.println("成功:" + result);
System.out.println("解密结果: "+ result.getDecryptData());
System.out.println("验证信息状态码: "+ result.getVerification());
System.out.println("验证提示信息: "+ result.getMessage());
} else {
System.out.println("失败:" + response.getBody());
}
} catch (ApiException e) {
e.printStackTrace();
}