---
url: "https://pay.weixin.qq.com/doc/v3/partner/4013059060.md"
title: "如何使用API证书解密敏感字段"
doc_id: 4013059060
---

>更新时间：2024.11.20

微信支付使用商户API证书中的公钥对下行的敏感信息进行加密。开发者应使用商户私钥对下行的敏感信息的密文进行解密。

同样的，大部分编程语言支持RSA私钥解密。你可以参考示例，了解如何使用您的编程语言实现敏感信息解密。

JAVA：

```
public static String rsaDecryptOAEP(String ciphertext, PrivateKey privateKey)
throws BadPaddingException, IOException {
  try {
    Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    byte[] data = Base64.getDecoder().decode(ciphertext);
    return new String(cipher.doFinal(data), "utf-8");
  } catch (NoSuchPaddingException | NoSuchAlgorithmException e) {
    throw new RuntimeException("当前Java环境不支持RSA v1.5/OAEP", e);
  } catch (InvalidKeyException e) {
    throw new IllegalArgumentException("无效的私钥", e);
  } catch (BadPaddingException | IllegalBlockSizeException e) {
    throw new BadPaddingException("解密失败");
  }
}
```

GO：

```
cipherdata, _ := base64.StdEncoding.DecodeString(ciphertext)
rng := rand.Reader
plaintext, err := DecryptOAEP(sha1.New(), rng, rsaPrivateKey, cipherdata, nil)
if err != nil {
  fmt.Fprintf(os.Stderr, "Error from decryption: %s\n", err)
  return
}
fmt.Printf("Plaintext: %s\n", string(plaintext))
```