首页 > 解决方案 > 如何在 PostgreSQL 中将字节数组编码为 base32

问题描述

我有一个 Java 应用程序,它通过将加密随机字节编码为 base32 ( RFC4648 ) 来生成主键的 ID。

如何通过 SQL 脚本对 PostgreSQL 执行相同操作?

似乎可以完成生成随机字节的gen_random_bytes工作,但似乎没有任何东西可以将它们编码为 base32。

标签: postgresql

解决方案


几年前我搜索了这个确切的问题,最后构建了一个纯 plpgsql 模式,其中包含处理这个问题的函数,并认为如果有人遇到它,我会把它留在这里。

归功于此视频和 RFC https://www.youtube.com/watch?v=Va8FLD-iuTg https://www.rfc-editor.org/rfc/rfc4648

这是扩展https://github.com/pyramation/base32/blob/master/packages/base32/sql/launchql-base32--0.0.1.sql

一旦你安装它,你可以做

select base32.encode('foo');
-- MZXW6===


select base32.decode('MZXW6===');
-- foo

推荐阅读