支付宝小程序加密:
const app = getApp();
my.rsa({
action: 'encrypt',
text: pText,
key: app.globalData.publicKey,
success: (result) => {
console.log(result.text);
},
fail(e) {
my.alert({
content: e.errorMessage || e.error,
});
},
});
java后台解密:
package com.soft.backstage.alipay.filter;
import com.alibaba.fastjson.JSON;
import com.soft.utils.*;
import org.springframework.stereotype.Service;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.PrivateKey;
import java.util.Map;
@WebFilter(filterName = "AlipayFilter", urlPatterns = {"/alipay/*"})
@Service
public class AlipayFilter implements Filter {
private static final Logger LOG = Logger.getLogger(AlipayFilter.class);
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
ParameterRequestWrapper requestWrapper = getParameterRequestWrapper(httpRequest, session);
filterChain.doFilter(requestWrapper, response);
return;
}
private ParameterRequestWrapper getParameterRequestWrapper(HttpServletRequest httpRequest, HttpSession session) {
String params = httpRequest.getParameter("params");
ParameterRequestWrapper requestWrapper = null;
if(!StringUtil.isEmpty(params)){
try {
PrivateKey privateKey = RSAUtil.string2PrivateKey((String) session.getAttribute("privateKey"));
byte[] base642Byte = RSAUtil.base642Byte(params);
byte[] privateDecrypt = RSAUtil.privateDecrypt(base642Byte, privateKey);
System.out.println("解密后的明文: " + new String(privateDecrypt,"UTF-8"));
Map<String, Object> mapTypes = JSON.parseObject(new String(privateDecrypt,"UTF-8"));
requestWrapper = new ParameterRequestWrapper(httpRequest, mapTypes);
for (Object obj : mapTypes.keySet()) {
httpRequest.setAttribute("" + obj, mapTypes.get(obj));
}
} catch (Exception e) {
e.printStackTrace();
}
}
return requestWrapper;
}
@Override
public void init(FilterConfig arg0) throws ServletException {}