У меня есть открытый ключ возвращается какJava нагрузки с открытым ключом
"kty" : "RSA",
"alg" : "RS256",
"ext" : false,
"n": "vswzzDmrqLSHUu61YDxUhM87hjcVjg42NwpFOyLQK8CyW5YRcr1YUkFRNDbb92MTNW3CsSWJX3DSuilnxf8n3_JW-A9R5JAqwmEygYIXuFcoJ_pb923bph0-ayWPBfD-qwYrELvpiEHBf1QSLJYkRb1wzAlwhCeYJorifu2WhCZoOVVYQAEyNqYF7AVhNImioT8-lhFWGqHp2Jt7-oXtCjVVyyShRHUMYyCRzGj1VGI6AU5DgVebXYD2GJawUhX -AD2CzsX8lMXeaVu88sBU9XLL1Zb_cOvAC7wTXxcls0taKx-8PiWUWKjSg0-O2ZXbfFROyQpQYHQH0BkO8XRh8w"
"e" : "AQAB"
И я хочу использовать Java, чтобы загрузить его, и мой код, как
package key;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
public class PublicKeyReader {
public static PublicKey get() throws Exception {
String key = "vswzzDmrqLSHUu61YDxUhM87hjcVjg42NwpFOyLQK8CyW5YRcr1YUkFRNDbb92MTNW3CsSWJX3DSuilnxf8n3_JW-A9R5JAqwmEygYIXuFcoJ_pb923bph0-ayWPBfD-qwYrELvpiEHBf1QSLJYkRb1wzAlwhCeYJorifu2WhCZoOVVYQAEyNqYF7AVhNImioT8-lhFWGqHp2Jt7-oXtCjVVyyShRHUMYyCRzGj1VGI6AU5DgVebXYD2GJawUhX-AD2CzsX8lMXeaVu88sBU9XLL1Zb_cOvAC7wTXxcls0taKx-8PiWUWKjSg0-O2ZXbfFROyQpQYHQH0BkO8XRh8w";
X509EncodedKeySpec spec = new X509EncodedKeySpec(key.getBytes());
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePublic(spec);
}
public static void main(String[] args) {
try {
new PublicKeyReader().get();
} catch (Exception e) {
e.printStackTrace();
}
}
}
и я получил исключение брошено, говорит java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
Как правильно загрузить?
SO Ответ на аналогичный вопрос: http://stackoverflow.com/questions/26867840/java-security-spec-invalidkeyspecexception-and-inalse-key-specification-e –
Я не уверен, что получу ваш комментарий. Этот вопрос касается шифрования ключа и сохранения его в файл, а затем загрузки его из файла. Почему это похоже на мой вопрос? Ну, я не совсем понимаю «AQAB» в моем вопросе либо ... – Bomin
AQAB - это всего лишь базовая 64 для публичного экспонента, которая обычно является «010001» в шестнадцатеричных (четвертое число Ферма). Если вы посмотрите на это поразрядным в 6-битных группах, то число будет '000000 010000 000000 000001', в числах' 0 16 0 1' из, als je dat vertaald naar base 64 символа, 'AQAB' (' A' является первым символ в алфавите base64). –