Расшифровать зашифрованное изображение AES в браузере с помощью window.crypto.subtle.decrypt
Пример использования для бизнеса:
В моем приложении я разрешаю пользователям загружать изображения. Теперь, прежде чем сохранять его в файловой системе, я хочу, чтобы изображения были зашифрованы AES. Для отображения изображений в браузере я хочу расшифровать их на лету в браузере. Таким образом, в основном они будут зашифрованы в состоянии покоя и будут расшифрованы во время воспроизведения.
Что я реализовал:
Я зашифровал изображение, используя открытый SSL и алгоритм AES 265 CBC. Ниже приведена команда, которую я использовал
openssl enc -in image-original.jpg -out image-enc.jpg -e -aes256 -k 26ca44bbeb4b6608437737970cbfe0db
Во внешнем интерфейсе я отправляю HTTP-вызов серверу для чтения зашифрованного изображения как большого двоичного объекта и пытаюсь расшифровать этот большой двоичный объект с помощью функции window.crypto.subtle.decrypt. Ниже приведен код
window.crypto.subtle.decrypt( { name: "AES-CBC", length: 256 }, "26ca44bbeb4b6608437737970cbfe0db", "blob that we fetched from server" ).then((result) => { debugger; });
Но я получаю указанную ниже ошибку в консоли браузера
"TypeError: Failed to execute 'decrypt' on 'SubtleCrypto': parameter 2 is not of type 'CryptoKey'."
Вопросы:
У меня от вас 2 вопроса, ребята,
- Помогите мне решить эту ошибку, так как я не нахожу большой помощи в Интернете
- Предложите мне лучший подход или поделитесь своим опытом, если вы уже делали такую работу в прошлом.
1 ответ
Вместо передачи необработанного ключа мне пришлось передать объект CryptoKey, в который былимпортирован необработанный ключ .