base64和SQLite中的其他编码
#sql #database #sqlite

您可能听说过Sqlite中的十六进制编码:

select hex('hello');
-- 68656C6C6F

select unhex('68656C6C6F');
-- hello

sqlite默认情况下不支持其他编码算法。但是,您可以使用sqlean-crypto扩展名轻松地启用它们(以任何方式与加密货币无关)。

注意。与其他DBM不同,向SQLITE添加扩展是轻而易举的。下载一个文件,运行一个数据库命令 - 您很高兴去。

sqlean-crypto添加了两个功能:

  • encode(data, algo)使用指定算法将二进制数据编码为文本表示。
  • decode(text, algo)使用指定算法从文本表示中解码二进制数据。

支持的算法:base32base64base85hexurl

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

Hexadecimal使用16个字符(0-9和a-f):

select encode('hello', 'hex');
-- 68656c6c6f

select decode('68656c6c6f', 'hex');
-- hello

URL encoding替换了字符串中的非alphanumeric字符,其相应的百分比编码值:

select encode('hel lo!', 'url');
-- hel%20lo%21

select decode('hel%20lo%21', 'url');
-- hel lo!

安装和用法

  1. 下载latest release

  2. 与sqlite命令行接口一起使用:

sqlite> .load ./crypto
sqlite> select encode('hello', 'base64');

有关IDE,Python等的用法,请参见How to Install an Extension

请参阅Extension Documentation以获取参考。

在Twitter上关注@ohmypy以跟上新帖子