From f96f3900e2ec516e10fa9143f60e7e64e500d2a0 Mon Sep 17 00:00:00 2001 From: chenjiahe <763432473@qq.com> Date: 星期四, 31 三月 2022 16:31:38 +0800 Subject: [PATCH] 新增RSA的校验和生成签名方法 --- src/main/java/com/hx/util/rsa/RSASignature.java | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hx/util/rsa/RSASignature.java b/src/main/java/com/hx/util/rsa/RSASignature.java index ae1d4ba..593f276 100644 --- a/src/main/java/com/hx/util/rsa/RSASignature.java +++ b/src/main/java/com/hx/util/rsa/RSASignature.java @@ -1,11 +1,13 @@ package com.hx.util.rsa; +import com.hx.util.StringUtils; + import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; - +import java.util.*; /** @@ -25,7 +27,7 @@ * @param encode 瀛楃闆嗙紪鐮� * @return 绛惧悕鍊� */ - public static String sign(String content, String privateKey, String encode) { + public static String createSign(String content, String privateKey, String encode) { try { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey) ); @@ -49,7 +51,7 @@ return null; } - public static String sign(String content, String privateKey) { + public static String createSign(String content, String privateKey) { try{ PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey) ); KeyFactory keyf = KeyFactory.getInstance("RSA"); @@ -65,6 +67,44 @@ return null; } + + /** + * RSA楠岀鍚嶆鏌� + * @param params 鎵�鏈夊弬鏁� + * @param publicKey 鍒嗛厤缁欏紑鍙戝晢鍏挜 + * @param encode 瀛楃闆嗙紪鐮� + * @return 甯冨皵鍊� + */ + public static boolean doCheck(Map<String,String> params, String publicKey, String encode) { + String sign = params.get("sign"); + if(sign == null){ + return false; + } + String content = getSignCheckContent(params); + return doCheck( content, sign, publicKey, encode); + } + + public static String getSignCheckContent(Map<String, String> params) { + if (params == null) { + return null; + } else { + params.remove("sign"); + StringBuilder content = new StringBuilder(); + List<String> keys = new ArrayList(params.keySet()); + Collections.sort(keys); + + for(int i = 0; i < keys.size(); ++i) { + String key = (String)keys.get(i); + String value = (String)params.get(key); + if(StringUtils.isEmpty(value)){ + continue; + } + content.append(i == 0 ? "" : "&").append(key).append("=").append(value); + } + return content.toString(); + } + } + /** * RSA楠岀鍚嶆鏌� * @param content 寰呯鍚嶆暟鎹� -- Gitblit v1.8.0