В моем Kivy 2.3.1, Buildozer 1.5.0, P4A 2024.01.21, Python 3.11.16 На macOS есть кусок кода для безопасного сохранения локально. The Cipher.init () продолжает отбрасывать следующую ошибку: < /p>
06-18 15:49:56.872 4851 4988 I python : Save failed: Invalid instance of 'javax/crypto/SecretKey' passed for a 'java/security/cert/Certificate'
06-18 15:49:56.873 4851 4988 I python : Traceback (most recent call last):
06-18 15:49:56.873 4851 4988 I python : File "/Users/macbook/Documents/code/py/vmonfront/.buildozer/android/app/lib/android_secure_store.py", line 101, in save
06-18 15:49:56.873 4851 4988 I python : File "jnius/jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__
06-18 15:49:56.873 4851 4988 I python : File "jnius/jnius_export_class.pxi", line 871, in jnius.JavaMethod.__call__
06-18 15:49:56.873 4851 4988 I python : File "jnius/jnius_conversion.pxi", line 83, in jnius.populate_args
06-18 15:49:56.874 4851 4988 I python : File "jnius/jnius_utils.pxi", line 259, in jnius.check_assignable_from
06-18 15:49:56.874 4851 4988 I python : TypeError: Invalid instance of 'javax/crypto/SecretKey' passed for a 'java/security/cert/Certificate'
< /code>
Вот строка кода в save (), которая вызывает ошибку: < /p>
cipher.init(Cipher.ENCRYPT_MODE, secret_key)
< /code>
Согласно Java doc, шифр может быть инициализирован так же простой, как указано выше. Попробовал довольно несколько способов init, и все они бросают одну и ту же ошибку несоответствия типа. Утверждается, что ключ сгенерирован успешно и хранится в магазине ключей Android. Ключ - следующее: < /p>
06-17 23:43:02.559 5820 5898 I python : [DEBUG] SecretKey class: jnius.reflect.keystore2.AndroidKeyStoreSecretKey
06-17 23:43:02.559 5820 5898 I python : [DEBUG] SecretKey algorithm: AES
06-17 23:43:02.559 5820 5898 I python : [DEBUG] SecretKey format: None
< /code>
вот полный код: < /p>
android_secure_store.py
from jnius import autoclass, cast
import base64
import json
from kivy.storage.jsonstore import JsonStore
# Android & Java classes
KeyStore = autoclass("java.security.KeyStore")
KeyGenerator = autoclass("javax.crypto.KeyGenerator")
Cipher = autoclass("javax.crypto.Cipher")
GCMParameterSpec = autoclass("javax.crypto.spec.GCMParameterSpec")
KeyGenParameterSpecBuilder = autoclass("android.security.keystore.KeyGenParameterSpec$Builder")
KeyProperties = autoclass("android.security.keystore.KeyProperties")
PythonActivity = autoclass("org.kivy.android.PythonActivity")
# Constants
KEY_ALIAS = "KivyAppSecretKey"
TRANSFORMATION = "AES/GCM/NoPadding"
STORE_FILE = "secure_store.json"
class AndroidSecureStore:
def __init__(self):
self.context = PythonActivity.mActivity
self.store = JsonStore(STORE_FILE)
self.keystore = KeyStore.getInstance("AndroidKeyStore")
self.keystore.load(None)
if not self.keystore.containsAlias(KEY_ALIAS):
self._generate_key()
def _generate_key(self): ##
Подробнее здесь: https://stackoverflow.com/questions/796 ... ey-incompa
Cipher.init () с допустимым ключом из Android -магазина клавиш бросает ошибку несовместимости ключей ⇐ Android
Форум для тех, кто программирует под Android
1750754401
Anonymous
В моем Kivy 2.3.1, Buildozer 1.5.0, P4A 2024.01.21, Python 3.11.16 На macOS есть кусок кода для безопасного сохранения локально. The Cipher.init () продолжает отбрасывать следующую ошибку: < /p>
06-18 15:49:56.872 4851 4988 I python : Save failed: Invalid instance of 'javax/crypto/SecretKey' passed for a 'java/security/cert/Certificate'
06-18 15:49:56.873 4851 4988 I python : Traceback (most recent call last):
06-18 15:49:56.873 4851 4988 I python : File "/Users/macbook/Documents/code/py/vmonfront/.buildozer/android/app/lib/android_secure_store.py", line 101, in save
06-18 15:49:56.873 4851 4988 I python : File "jnius/jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__
06-18 15:49:56.873 4851 4988 I python : File "jnius/jnius_export_class.pxi", line 871, in jnius.JavaMethod.__call__
06-18 15:49:56.873 4851 4988 I python : File "jnius/jnius_conversion.pxi", line 83, in jnius.populate_args
06-18 15:49:56.874 4851 4988 I python : File "jnius/jnius_utils.pxi", line 259, in jnius.check_assignable_from
06-18 15:49:56.874 4851 4988 I python : TypeError: Invalid instance of 'javax/crypto/SecretKey' passed for a 'java/security/cert/Certificate'
< /code>
Вот строка кода в save (), которая вызывает ошибку: < /p>
cipher.init(Cipher.ENCRYPT_MODE, secret_key)
< /code>
Согласно Java doc, шифр может быть инициализирован так же простой, как указано выше. Попробовал довольно несколько способов init, и все они бросают одну и ту же ошибку несоответствия типа. Утверждается, что ключ сгенерирован успешно и хранится в магазине ключей Android. Ключ - следующее: < /p>
06-17 23:43:02.559 5820 5898 I python : [DEBUG] SecretKey class: jnius.reflect.keystore2.AndroidKeyStoreSecretKey
06-17 23:43:02.559 5820 5898 I python : [DEBUG] SecretKey algorithm: AES
06-17 23:43:02.559 5820 5898 I python : [DEBUG] SecretKey format: None
< /code>
вот полный код: < /p>
android_secure_store.py
from jnius import autoclass, cast
import base64
import json
from kivy.storage.jsonstore import JsonStore
# Android & Java classes
KeyStore = autoclass("java.security.KeyStore")
KeyGenerator = autoclass("javax.crypto.KeyGenerator")
Cipher = autoclass("javax.crypto.Cipher")
GCMParameterSpec = autoclass("javax.crypto.spec.GCMParameterSpec")
KeyGenParameterSpecBuilder = autoclass("android.security.keystore.KeyGenParameterSpec$Builder")
KeyProperties = autoclass("android.security.keystore.KeyProperties")
PythonActivity = autoclass("org.kivy.android.PythonActivity")
# Constants
KEY_ALIAS = "KivyAppSecretKey"
TRANSFORMATION = "AES/GCM/NoPadding"
STORE_FILE = "secure_store.json"
class AndroidSecureStore:
def __init__(self):
self.context = PythonActivity.mActivity
self.store = JsonStore(STORE_FILE)
self.keystore = KeyStore.getInstance("AndroidKeyStore")
self.keystore.load(None)
if not self.keystore.containsAlias(KEY_ALIAS):
self._generate_key()
def _generate_key(self): ##
Подробнее здесь: [url]https://stackoverflow.com/questions/79668564/cipher-init-with-a-valid-key-from-android-keystore-throws-error-of-key-incompa[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия