簡體   English   中英

Java RSA加密失敗

[英]Java RSA encryption fails

我編寫了這樣的代碼,該代碼應帶有3個參數,一個是帶有公鑰的文件,第二個是要加密的文件,第三個是要保存加密文本的文件。 但是,它無法正常工作,我添加了println只是為了查看失敗之處:

    public class cipher {
       public static void main (String[] args) throws GeneralSecurityException{
          try {
             FileInputStream keyfis = new FileInputStream(args[0]);
             byte[] encKey = new byte[keyfis.available()];  
             System.out.println(encKey);
             keyfis.read(encKey);
             System.out.println(encKey);
             System.out.println("1");
             X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encKey);
             System.out.println(keySpec);
              KeyFactory kf = KeyFactory.getInstance("RSA");
             System.out.println("2");
             PublicKey pubKey = kf.generatePublic(keySpec);
              System.out.println("3r");
             Cipher cipher = Cipher.getInstance("RSA");
             cipher.init(Cipher.ENCRYPT_MODE,pubKey);   
              System.out.println("4");
               }


         catch(Exception e)
           {}


        }   


}

調用程序后,我有這樣的輸出:

[B@938b4a
[B@938b4a
1
java.security.spec.X509EncodedKeySpec@182d86
2

感謝幫助!

輸出以@938b4a結尾的前3個print語句僅顯示該對象存在,並且該對象未實現toString() 字節數組應使用十六進制打印出來。

之后,您將generatePublic ,但失敗。 這意味着您的公共密鑰-應該是DER編碼的SubjectPublicKeyInfo結構-無法解析。

在不知道您遇到什么錯誤的情況下,看起來可能是您正在尋找的答案。

當您應該使用PKCS8EncodedKeySpec時,似乎您正在嘗試使用X509EncodedKeySpec編碼私鑰。

然后,將使用X509EncodedKeySpec對公共密鑰進行編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM