对于部分接口响应返回的敏感信息,微企付可能会需要使用以下方式进行解密:
开发者利用本库提供的 RSAUtility
、SM4Utility
工具类自行解密相关字段。下面给出一个使用 RSAUtility
、SM4Utility
工具类解密数据的示例代码:
// 先通过平台私钥基于 RSAES-OAEP 得到解密后的 SM4 密钥
string sm4EncryptedKey = response.TBEPEncryption.EncryptedKey;
string sm4Key = RSAUtility.DecryptWithECB(platformPrivateKey, sm4EncryptedKey);
string sm4IV = response.TBEPEncryption.IV;
// 再通过 SM4 得到敏感信息明文
string cipherText = "待解密的数据";
string plainText = SM4Utility.DecryptWithCBC(sm4Key, sm4IV, cipherText);
此外,本库还封装了直接解密响应中敏感信息字段的扩展方法,下面给出一个示例代码:
var request = new GetPaymentByPaymentIdRequest();
var response = await client.ExecuteGetPaymentByPaymentIdAsync(request);
Console.WriteLine("before: {0}", response.Payee.EnterpriseName); // 此时仍是密文
client.DecryptResponseSensitiveProperty(response);
Console.WriteLine("after: {0}", response.Payee.EnterpriseName); // 此时已是明文
如果你希望本库在响应后能自动完成这项操作,你可以在构造得到 WechatTenpayBusinessClient
对象时指定自动化参数:
var options = new WechatTenpayBusinessClientOptions()
{
AutoDecryptResponseSensitiveProperty = true
};
var client = WechatTenpayBusinessClientBuilder.Create(options).Build();
这样,本库会在实际收到响应后自动为你调用 DecryptResponseSensitiveProperty()
方法。
此外,该扩展方法使用反射、并依赖 WechatTenpayBusinessSensitiveAttribute
、WechatTenpayBusinessSensitivePropertyAttribute
特性,相比较手动解密,可能会存在一定的性能开销。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )