Base64 и другие кодировки в SQLite
Вы, возможно, слышали о шестнадцатеричном кодировании в SQLite:
select hex('hello');
-- 68656C6C6F
select unhex('68656C6C6F');
-- hello
По умолчанию SQLite не поддерживает другие алгоритмы кодирования данных. Но вы легко можете включить их с помощью расширения sqlean-crypto
(с криптовалютами никак не связано).
Примечание. В отличие от других СУБД, добавить расширение в SQLite элементарно. Скачиваете файл, выполняете одну команду — и готово.
sqlean-crypto
добавляет две функции:
encode(data, algo)
кодирует бинарные данные в текст по указанному алгоритму.decode(text, algo)
декодирует текст в бинарные данные по указанному алгоритму.
Поддерживет алгоритмы base32
, base64
, base85
, hex
и url
.
Base32 использует 32 человекочитаемых символа:
select encode('hello', 'base32');
-- NBSWY3DP
select decode('NBSWY3DP', 'base32');
-- hello
Base64 использует 64 печатных символа:
select encode('hello', 'base64');
-- aGVsbG8=
select decode('aGVsbG8=', 'base64');
-- hello
Base85 (он же Ascii85) использует 85 печатных символов:
select encode('hello', 'base85');
-- BOu!rDZ
select decode('BOu!rDZ', 'base85');
-- hello
Шестнадцатеричное кодирование использует 16 символов (0-9 и A-F):
select encode('hello', 'hex');
-- 68656c6c6f
select decode('68656c6c6f', 'hex');
-- hello
URL-кодирование заменяет некоторые символы на последовательности, которые безопасно использовать в URL-адресах:
select encode('hel lo!', 'url');
-- hel%20lo%21
select decode('hel%20lo%21', 'url');
-- hel lo!
Такого набора алгоритмов хватит на все случаи жизни.
Установка
Скачайте свежий релиз
Подключите в командной строке SQLite (
sqlite.exe
):
sqlite> .load ./crypto
sqlite> select encode('hello', 'base64');
Как установить расширение для IDE, Python и других сценариев.
Документация расширения с подробным описанием.
★ Подписывайтесь на новые заметки.