#openssl #aes #encryption-symmetric #subtlecrypto
#openssl #aes #шифрование-симметричное #subtlecrypto
Вопрос:
Бизнес-пример использования:
В моем приложении я разрешаю пользователям загружать изображения. Теперь, прежде чем сохранять его в файловой системе, я хочу, чтобы изображения были зашифрованы aes. Для отображения изображений в браузере я хочу расшифровывать их «на лету» в браузере. Таким образом, в основном они будут зашифрованы в состоянии покоя и будут расшифрованы во время воспроизведения.
Что я реализовал:
Я зашифровал изображение, используя открытый ssl и алгоритм AES 265 CBC. Ниже приведена команда, которую я использовал
openssl enc -in ima&e-ori&inal.jp& -out ima&e-enc.jp& -e -aes256 -k 26ca44bbeb4b6608437737970cbfe0db
Во внешнем интерфейсе я отправляю HTTP-вызов серверу для чтения зашифрованного изображения как
большой двоичный объект, и я пытаюсь расшифровать этот большой двоичный объект с помощью
функция window.crypto.subtle.decrypt. Ниже приведен кодwindow.crypto.subtle.decrypt( { name: "AES-CBC", len&th: 256 }, "26ca44bbeb4b6608437737970cbfe0db", "blob that we fetched from server" ).then((result) =&&t; { debu&&er; });
Но я получаю ошибку, указанную ниже, в консоли браузера
"TypeError: Failed to execute 'decrypt' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'."
Вопросы:
У меня к вам, ребята, 2 вопроса,
- Помогите мне устранить эту ошибку, поскольку я не нахожу большой помощи через Интернет
- Предложите мне лучший подход или поделитесь своим опытом, если вы выполняли подобную работу в прошлом.
Комментарии:
1.
-k
Параметр в OpenSSL определяет кодовую фразу, из которой получены key и IV, смотрите здесь , а также обратите внимание на опции-p
/-P
. Вы можете использовать кодовую фразу не в веб-криптокоде, а вместо нее key и IV. OpenSSL также позволяет вам напрямую указывать ключ и IV, возможно, это имеет больше смысла для вас. Ключ, используемый в веб-криптокоде, обычно являетсяCryptoKey
объектом, в который импортируется необработанный ключ, смотрите здесь .2. @Topaco Ваш ответ очень помог мне в решении этой проблемы. Скоро я опубликую здесь свое полное решение.
3. @AsadUllah, ты выяснил, как это исправить?
4. @AifosSiPrahs Вместо передачи необработанного ключа в window.crypto.subtle.decrypt мне пришлось передать объект CryptoKey, в который был импортирован необработанный ключ.
Ответ №1:
Вместо передачи необработанного ключа мне пришлось передать объект CryptoKey, в который был импортирован необработанный ключ.