2016-12-24 12 views
2

キー(セキュリティ)を文字列に変換してから、そのオブジェクトに変換する際に問題があります。文字列をキーに変換する(逆の場合)

java.lang.IllegalArgumentException: Illegal base64 character 20

と私のコード:

textFromKey is sending to UDP server textFromKey is a output from server if I want to use that key

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); 
が、私はそのウェブサイトでいくつかの答えを見たが、何が私を助けて、私は多少の誤差があります。これを見ていただけますか?

IDEは問題があることを私に言った: byte[] byteKey = Base64.getDecoder().decode(textFromKey.getBytes());

+1

不正な文字は20(16進数)のスペースです。たとえば、 '' AAA = "'と '' AAA = "'を印刷すると、それらは視覚的には同じように見えますが、異なっており、後者は4648で不正です。デコードしている文字列を正確に確認してください。また、スペースを追加したい場合は 'getMimeDecoder()'を使います。 MIMEは、迷惑なnon-base64文字を許可します。 –

答えて

-1

問題は、単にコードから明確ではありません。あなただけのことをしようとすることができます

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

戻って戻ってきますか?

関連する問題