Задача: после генерации PrivateKey обеспечить его хранение и дальнейшее восстановление для подписания документов и проверки созданных с его помощью цифровых подписей.
Создаю пару ключей:
// Создать пару ключей:
btnKeyPair.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
keyGen.initialize(2048);
pair = keyGen.generateKeyPair();
PublicKey publicKey = pair.getPublic();
PrivateKey privateKey = pair.getPrivate();
// Сохранение ключей (в данном случае сохраняю приватный ключ в виде String
// в Shared Preferences.
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
}
});
Восстановление приватного ключа из String (privateKeyString):
byte[] pk = privateKeyString.getBytes();
KeyFactory keyFactory=KeyFactory.getInstance("DSA");
PrivateKey privateKey=keyFactory.generatePrivate(new PKCS8EncodedKeySpec(pk));
Получаю ошибку: "encoded key spec not recognized: failed to construct sequence from byte[]: DEF length 111 object truncated by 29"
Вопросы:
P.S. Использовать KeyStore не хотелось бы, т.к., насколько я понимаю, не на всех устройствах оно работает корректно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Доброго времени)) Имеется модуль AВ нем в тестовых директориях лежат тестовые сущности (не тесты)
Пытаюсь изучать разработку web приложений на JavaПопробовал TomCat, с ним проблем не возникло, вот только это не полноценный сервер, а хотелось...