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