2016-12-24 106 views
2

我將Key(security)轉換爲字符串並將其轉換爲該對象時出現問題。我有一些錯誤:將字符串轉換爲鍵,反之亦然

java.lang.IllegalArgumentException: Illegal base64 character 20

和我的代碼:

KeyPairGenerator kpairg = KeyPairGenerator.getInstance("RSA"); 
kpairg.initialize(1024); 
KeyPair kpair = kpairg.genKeyPair(); 
Key publicKey = kpair.getPublic(); 

// to String 
String textFromKey = Base64.getEncoder().encodeToString(publicKey.getEncoded()); 

// to Key 
byte[] byteKey = Base64.getDecoder().decode(textFromKey.getBytes()); 
X509EncodedKeySpec X509publicKey = new X509EncodedKeySpec(byteKey); 
KeyFactory kf = KeyFactory.getInstance("RSA"); 
Key pubb = kf.generatePublic(X509publicKey); 

textFromKey is sending to UDP server textFromKey is a output from server if I want to use that key 我看到在該網站的一些答案,但任何事情幫助我。你能看看這個嗎?

IDE告訴我,有一個問題: byte[] byteKey = Base64.getDecoder().decode(textFromKey.getBytes());

+1

非法字符是20(十六進制)即空格。如果你打印例如'「AAA =」'和「」AAA =「'他們看起來相同,但是不同,後者在4648中是不合法的。檢查你正在解碼的字符串是否完全相同。或者如果你想添加空間,可以使用'getMimeDecoder()'; MIME允許流浪的非base64字符。 –

回答

-1

的問題不是隻從代碼清晰。你可以試試只是

X509EncodedKeySpec X509publicKey = new X509EncodedKeySpec(publicKey.getEncoded()); 

和回來?

相關問題