From 7a86d3b83f9154221f8bba17b159d56129d03264 Mon Sep 17 00:00:00 2001 From: chenjiahe <763432473@qq.com> Date: 星期五, 14 七月 2023 15:01:48 +0800 Subject: [PATCH] 拦截器优化 --- src/main/java/com/hx/util/rsa/RSASignature.java | 111 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 72 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/hx/util/rsa/RSASignature.java b/src/main/java/com/hx/util/rsa/RSASignature.java index 593f276..cf7a0a5 100644 --- a/src/main/java/com/hx/util/rsa/RSASignature.java +++ b/src/main/java/com/hx/util/rsa/RSASignature.java @@ -1,13 +1,22 @@ package com.hx.util.rsa; import com.hx.util.StringUtils; +import org.bouncycastle.asn1.ASN1Encodable; +import org.bouncycastle.asn1.ASN1ObjectIdentifier; +import org.bouncycastle.asn1.ASN1Primitive; +import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; +import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; +import org.bouncycastle.asn1.x509.AlgorithmIdentifier; 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.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; /** @@ -51,6 +60,43 @@ return null; } + /** + * RSA绛惧悕Pkcs1ToPkcs8 + * @param rawKey 鍟嗘埛绉侀挜 + * @return 绛惧悕鍊� + */ + public static String formatPkcs1ToPkcs8(String rawKey) { + if (!StringUtils.isEmpty(rawKey)) { + try { + //灏咮ASE64缂栫爜鐨勭閽ュ瓧绗︿覆杩涜瑙g爜 + byte[] encodeByte = Base64.decode(rawKey); + AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(PKCSObjectIdentifiers.pkcs8ShroudedKeyBag); + PrivateKeyInfo privKeyInfo = new PrivateKeyInfo(algorithmIdentifier, ASN1ObjectIdentifier.fromByteArray(encodeByte)); + return Base64.encode(privKeyInfo.getEncoded()); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + /** + * RSA绛惧悕Pkcs8ToPkcs1 + * @param rawKey 鍟嗘埛绉侀挜 + * @return 绛惧悕鍊� + */ + public static String formatPkcs8ToPkcs1(String rawKey){ + try { + byte[] encodeByte = Base64.decode(rawKey); + PrivateKeyInfo pki = PrivateKeyInfo.getInstance(encodeByte); + ASN1Encodable asn = pki.parsePrivateKey(); + ASN1Primitive primitive = asn.toASN1Primitive(); + return Base64.encode(primitive.getEncoded()); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + public static String createSign(String content, String privateKey) { try{ PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey) ); @@ -65,44 +111,6 @@ e.printStackTrace(); } 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(); - } } /** @@ -159,4 +167,29 @@ return false; } + /** + * ASCII鐮侀�掑鎺掑簭锛堝墧闄ょ┖鍊硷級 + * @param params + * @return + */ + public static String getSignCheckContent(Map<String, String> params) { + if (params == null) { + return null; + } else { + 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); + Object value = params.get(key); + if(value == null || StringUtils.isEmpty(value.toString())){ + continue; + } + content.append(i == 0 ? "" : "&").append(key).append("=").append(value); + } + return content.toString(); + } + } + } -- Gitblit v1.8.0