将字符串转换为私钥和公钥(RSA) [英] convert string to private and public key (RSA)

查看:278
本文介绍了将字符串转换为私钥和公钥(RSA)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

私钥和公钥这两个字符串是:

 静态字符串Public = 
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH + wPrKYG1KVlzQUVtBghR8n9d + /正 +
的zcShSZo0 + 3KgyVdOea7Ei7vQ1U4wRn1zlI5rSqHDzFitblmqnB2anzVvdQxLQ3Uq + /正 +
的EBKBfMihnLgCSW8Xf7MCH + DSGHNvBg2xSNhcfEmnbLPLnbuz4ySn1UB0lH2eqxy5 + /正 +
的0zstxhTY0binD9Y + rwIDAQAB +/ n;
静态字符串私人=
的MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIr5NQ / LYPG / UCAggA + /正 +
的MBQGCCqGSIb3DQMHBAiLh89iGSkmoASCAoBCpAo9 / IzDE3yGhvWr9RgozE7revOo + /正 +
的V2OXmU + D0 + WYAAx2GYVaUCbFVrmgiVmrbiTgLUMXAGIpvxQ2rzyIvRHW / RN3Gcky + / n +
qR / AwBatzixqrnoS4aD1 / Ovjr4hwde4XHYbPEilZZuVAJFiznhy73qm / So4XghSY .........;

我已经阅读了其他问题,并尝试了其解决方案,但是没有任何效果。和私钥都作为字符串..我需要将它们转换为'Key',但我不断获取java.security.spec.InvalidKeySpecException:java.security.InvalidKeyException ..at generatePublic和generatePrivate函数..这些键也仅用于测试因此,如果其他人都知道它们是可以的...

  public static Key loadPublicKey(StringString)抛出GeneralSecurityException,IOException 
{
byte [] data = Base64.getDecoder()。decode((stored.getBytes()));
X509EncodedKeySpec spec =新的X509EncodedKeySpec(data);
KeyFactory事实= KeyFactory.getInstance( RSA);
return fact.generatePublic(spec);

}


公共静态密钥loadPrivateKey(String key64)抛出GeneralSecurityException,IOException {
byte [] clear = Base64.getDecoder()。decode (key64.getBytes());
PKCS8EncodedKeySpec keySpec =新的PKCS8EncodedKeySpec(清除);
KeyFactory事实= KeyFactory.getInstance( RSA);
PrivateKey priv = fact.generatePrivate(keySpec);
Arrays.fill(clear,(byte)0);
return priv;

}


解决方案

删除line输入字符串声明。那不是关键的一部分: zcShSZo0 + 3KgyVdOea7Ei7vQ1U4wRn1zlI5rSqHDzFitblmqnB2anzVvdQxLQ3Uq +
EBKBfMihnLgCSW8Xf7MCH + DSGHNvBg2xSNhBC9Y1B1nSnY1B1nB2nYYB2YyB2b
静态字符串私人=
的MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIr5NQ / LYPG / UCAggA +
的MBQGCCqGSIb3DQMHBAiLh89iGSkmoASCAoBCpAo9 / IzDE3yGhvWr9RgozE7revOo +
的V2OXmU + D0 + WYAAx2GYVaUCbFVrmgiVmrbiTgLUMXAGIpvxQ2rzyIvRHW / RN3Gcky +
的QR / AwBatzixqrnoS4aD1 / Ovjr4hwde4XHYbPEilZZuVAJFiznhy73qm / So4XghSY .........;

我已经尝试使用以下代码:

  public static void main(String [] args)抛出GeneralSecurityException,IOException {
System.out.println(loadPublicKey(Public));

}

公共静态密钥loadPublicKey(字符串存储)抛出GeneralSecurityException,IOException
{
byte [] data = Base64.getDecoder()。decode ((stored.getBytes()));
X509EncodedKeySpec spec =新的X509EncodedKeySpec(data);
KeyFactory事实= KeyFactory.getInstance( RSA);
return fact.generatePublic(spec);

}

输出为:

 孙RSA公钥,1024位
模量:140431102839105138202102866401190456107365606715815288536913018579006717438700259314092212104831553250527764925385527697411165705192297577022746989837839401358787285684108054389360182109284048524426941021357601686464156659759470495649944686235380003772357268264646549523784880655065600797504478771675703688879
公共指数:65537


The two strings that are the private and public keys are :

    static String Public =          
       "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH+wPrKYG1KVlzQUVtBghR8n9d" + "/n" +
     "zcShSZo0+3KgyVdOea7Ei7vQ1U4wRn1zlI5rSqHDzFitblmqnB2anzVvdQxLQ3Uq" + "/n" +
    "EBKBfMihnLgCSW8Xf7MCH+DSGHNvBg2xSNhcfEmnbLPLnbuz4ySn1UB0lH2eqxy5" + "/n"+
     "0zstxhTY0binD9Y+rwIDAQAB"+ "/n";
    static String Private = 
        "MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIr5NQ/LYPG/UCAggA" +"/n"+
      "MBQGCCqGSIb3DQMHBAiLh89iGSkmoASCAoBCpAo9/IzDE3yGhvWr9RgozE7revOo" +"/n"+
          "V2OXmU+d0+WYAAx2GYVaUCbFVrmgiVmrbiTgLUMXAGIpvxQ2rzyIvRHW/RN3Gcky" +"/n"+
        "qR/AwBatzixqrnoS4aD1/Ovjr4hwde4XHYbPEilZZuVAJFiznhy73qm/So4XghSY........." ;

I have read the other questions and tried their solutions but nothing worked....I have a public and private key both as strings.. I need to convert them to 'Key' but i keep getting java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException ..at generatePublic and generatePrivate functions.. also the keys are just for testing therefore, it is ok if they are known to others...

      public static Key loadPublicKey(String stored) throws GeneralSecurityException, IOException 
       {
      byte[] data = Base64.getDecoder().decode((stored.getBytes()));
      X509EncodedKeySpec spec = new X509EncodedKeySpec(data);
      KeyFactory fact = KeyFactory.getInstance("RSA");
      return fact.generatePublic(spec);

        }


public static Key loadPrivateKey(String key64) throws     GeneralSecurityException, IOException {
        byte[] clear = Base64.getDecoder().decode(key64.getBytes());
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(clear);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        PrivateKey priv = fact.generatePrivate(keySpec);
        Arrays.fill(clear, (byte) 0);
        return priv;

   }

解决方案

Remove the line Feeds in the string declaration. That is not part of the key:

static String Public =          
       "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH+wPrKYG1KVlzQUVtBghR8n9d" +
     "zcShSZo0+3KgyVdOea7Ei7vQ1U4wRn1zlI5rSqHDzFitblmqnB2anzVvdQxLQ3Uq" + 
    "EBKBfMihnLgCSW8Xf7MCH+DSGHNvBg2xSNhcfEmnbLPLnbuz4ySn1UB0lH2eqxy5" +
     "0zstxhTY0binD9Y+rwIDAQAB";
static String Private = 
        "MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIr5NQ/LYPG/UCAggA" +
      "MBQGCCqGSIb3DQMHBAiLh89iGSkmoASCAoBCpAo9/IzDE3yGhvWr9RgozE7revOo" +
          "V2OXmU+d0+WYAAx2GYVaUCbFVrmgiVmrbiTgLUMXAGIpvxQ2rzyIvRHW/RN3Gcky" +
        "qR/AwBatzixqrnoS4aD1/Ovjr4hwde4XHYbPEilZZuVAJFiznhy73qm/So4XghSY........." ;

I have tried it with the following code:

  public static void main(String[] args) throws GeneralSecurityException, IOException {
      System.out.println(loadPublicKey(Public));

  }

  public static Key loadPublicKey(String stored) throws GeneralSecurityException, IOException 
  {
 byte[] data = Base64.getDecoder().decode((stored.getBytes()));
 X509EncodedKeySpec spec = new X509EncodedKeySpec(data);
 KeyFactory fact = KeyFactory.getInstance("RSA");
 return fact.generatePublic(spec);

   }

And Output is:

Sun RSA public key, 1024 bits
  modulus: 140431102839105138202102866401190456107365606715815288536913018579006717438700259314092212104831553250527764925385527697411165705192297577022746989837839401358787285684108054389360182109284048524426941021357601686464156659759470495649944686235380003772357268264646549523784880655065600797504478771675703688879
  public exponent: 65537

这篇关于将字符串转换为私钥和公钥(RSA)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆