小程序
小游戏
企业微信
微信支付
扫描小程序码分享
异常提示:javax.crypto.IllegalBlockSizeException: Data must not be longer than 214 bytes,根据文档给的示例采用的是RSA加密方式
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
sdk是自动加密的吗?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
是不是有用sdk?如果sdk加密一次后你二次加密就会有这个问题
你用的sdk,可能已经为你做过「加密」了,密文base64字符串长度一般是384字节
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
sdk是自动加密的吗?
是不是有用sdk?如果sdk加密一次后你二次加密就会有这个问题
开发者应当使用微信支付公钥,对上送的敏感信息进行加密。
大部分编程语言支持RSA公钥加密。你可以参考示例,了解如何使用您的编程语言实现敏感信息加密。
示例代码
JAVA
1public static String rsaEncryptOAEP(String message, PublicKey publicKey)
2throws IllegalBlockSizeException, IOException {
3 try {
4 Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
5 cipher.init(Cipher.ENCRYPT_MODE, publicKey);
6 byte[] data = message.getBytes("utf-8");
7 byte[] cipherdata = cipher.doFinal(data);
8 return Base64.getEncoder().encodeToString(cipherdata);
9 } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
10 throw new RuntimeException("当前Java环境不支持RSA v1.5/OAEP", e);
11 } catch (InvalidKeyException e) {
12 throw new IllegalArgumentException("无效的公钥", e);
13 } catch (IllegalBlockSizeException | BadPaddingException e) {
14 throw new IllegalBlockSizeException("加密原串的长度不能超过214字节");
15 }
16}参考的是这个示例微信官方给的
你用的sdk,可能已经为你做过「加密」了,密文base64字符串长度一般是384字节
开发者应当使用微信支付公钥,对上送的敏感信息进行加密。
大部分编程语言支持RSA公钥加密。你可以参考示例,了解如何使用您的编程语言实现敏感信息加密。
示例代码
JAVA
1public static String rsaEncryptOAEP(String message, PublicKey publicKey)
2throws IllegalBlockSizeException, IOException {
3 try {
4 Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
5 cipher.init(Cipher.ENCRYPT_MODE, publicKey);
6 byte[] data = message.getBytes("utf-8");
7 byte[] cipherdata = cipher.doFinal(data);
8 return Base64.getEncoder().encodeToString(cipherdata);
9 } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
10 throw new RuntimeException("当前Java环境不支持RSA v1.5/OAEP", e);
11 } catch (InvalidKeyException e) {
12 throw new IllegalArgumentException("无效的公钥", e);
13 } catch (IllegalBlockSizeException | BadPaddingException e) {
14 throw new IllegalBlockSizeException("加密原串的长度不能超过214字节");
15 }
16}