поэтому в своем приложении я шифрую свои данные с помощью ключа AES и шифрую этот ключ с помощью пары RSA.
Затем я сохраняю эту пару в хранилище ключей.
при получении нужного мне закрытого ключа из хранилища ключей чтобы отформатировать его в PKCS8
однако я не могу отформатировать закрытый ключ, потому что вы не можете получить доступ к закрытому ключу, закодированному из хранилища ключей.
Есть ли способ сгенерировать пару в формате PKCS8? или, может быть, обходной путь для форматирования закрытого ключа без доступа к закодированному?
генерация ключей:
fun generateRSAKey(context: Context): KeyPair {
val keyPairGenerator = KeyPairGenerator.getInstance(
AppConst.RSA, "AndroidKeyStore"
)
val spec:AlgorithmParameterSpec
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) {
spec = KeyGenParameterSpec.Builder(
"privateKey",
KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_VERIFY
)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
.setKeySize(1024)
.build()
}
else
{
val start: Calendar = Calendar.getInstance()
val end: Calendar = Calendar.getInstance()
end.add(Calendar.YEAR, 100)
spec = KeyPairGeneratorSpec.Builder(context)
.setAlias("privateKey")
.setSubject(X500Principal("CN=Sample Name, O=Android Authority"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(start.time)
.setEndDate(end.time)
.build()
}
keyPairGenerator.initialize(spec)
return keyPairGenerator.generateKeyPair()
}
получение ключей:
val keyStore=EncryptionUtil.getKeyStoreInstance()
keyStore.load(null)
val entry: KeyStore.Entry = keyStore.getEntry("privateKey", null)
val privateKey: PrivateKey = (entry as KeyStore.PrivateKeyEntry).privateKey
val decryptedAES = EncryptionUtil.decryptRSA(
android.util.Base64.decode(
aesKey,
android.util.Base64.DEFAULT
), KeyFactory.getInstance("RSA").generatePrivate(PKCS8EncodedKeySpec(privateKey.encoded))
)
Подробнее здесь: https://stackoverflow.com/questions/606 ... cs8-format
Получение закрытого ключа из хранилища ключей в формате PKCS8 ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1722787035
Anonymous
поэтому в своем приложении я шифрую свои данные с помощью ключа AES и шифрую этот ключ с помощью пары RSA.
Затем я сохраняю эту пару в хранилище ключей.
при получении нужного мне закрытого ключа из хранилища ключей чтобы отформатировать его в PKCS8
однако я не могу отформатировать закрытый ключ, потому что вы не можете получить доступ к закрытому ключу, закодированному из хранилища ключей.
Есть ли способ сгенерировать пару в формате PKCS8? или, может быть, обходной путь для форматирования закрытого ключа без доступа к закодированному?
генерация ключей:
fun generateRSAKey(context: Context): KeyPair {
val keyPairGenerator = KeyPairGenerator.getInstance(
AppConst.RSA, "AndroidKeyStore"
)
val spec:AlgorithmParameterSpec
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) {
spec = KeyGenParameterSpec.Builder(
"privateKey",
KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_VERIFY
)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
.setKeySize(1024)
.build()
}
else
{
val start: Calendar = Calendar.getInstance()
val end: Calendar = Calendar.getInstance()
end.add(Calendar.YEAR, 100)
spec = KeyPairGeneratorSpec.Builder(context)
.setAlias("privateKey")
.setSubject(X500Principal("CN=Sample Name, O=Android Authority"))
.setSerialNumber(BigInteger.ONE)
.setStartDate(start.time)
.setEndDate(end.time)
.build()
}
keyPairGenerator.initialize(spec)
return keyPairGenerator.generateKeyPair()
}
получение ключей:
val keyStore=EncryptionUtil.getKeyStoreInstance()
keyStore.load(null)
val entry: KeyStore.Entry = keyStore.getEntry("privateKey", null)
val privateKey: PrivateKey = (entry as KeyStore.PrivateKeyEntry).privateKey
val decryptedAES = EncryptionUtil.decryptRSA(
android.util.Base64.decode(
aesKey,
android.util.Base64.DEFAULT
), KeyFactory.getInstance("RSA").generatePrivate(PKCS8EncodedKeySpec(privateKey.encoded))
)
Подробнее здесь: [url]https://stackoverflow.com/questions/60658231/getting-private-key-from-keystore-in-pkcs8-format[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия