| | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * RSA签名Pkcs1ToPkcs8 |
| | | * @param rawKey 商户私钥 |
| | | * @return 签名值 |
| | | */ |
| | | public static String formatPkcs1ToPkcs8(String rawKey) { |
| | | if (!StringUtils.isEmpty(rawKey)) { |
| | | try { |
| | | //将BASE64编码的私钥字符串进行解码 |
| | | 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) ); |