这个坑我也遇到了,解决办法是:用sdk的时候直接传明文,sdk会帮自动加密。不需要咱们自己加密了。不然就会提示超长的错误
微信公钥加密敏感信息方法问题public static String rsaEncryptOAEP(String message, String publicKey) throws IllegalBlockSizeException, IOException { try { Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] data = message.getBytes("utf-8"); byte[] cipherdata = cipher.doFinal(data); return Base64.getEncoder().encodeToString(cipherdata); } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { throw new RuntimeException("当前Java环境不支持RSA v1.5/OAEP", e); } catch (InvalidKeyException e) { throw new IllegalArgumentException("无效的公钥", e); } catch (IllegalBlockSizeException | BadPaddingException e) { throw new IllegalBlockSizeException("加密原串的长度不能超过214字节"); } } 想问下在使用微信支付公钥加密敏感信息的时候,微信官方的文档里面 cipher.init(Cipher.ENCRYPT_MODE, publicKey) init方法是支持publicKey传入一个字符串的,我复制到代码中之后 这个init方法是不支持publicKey是一个字符串的,必须是KEY类型的参数,想问下这是我包用的不对吗
2天前