首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用标准PostgreSQL对字符串进行加密?

如何使用标准PostgreSQL对字符串进行加密?
EN

Stack Overflow用户
提问于 2011-04-21 05:24:09
回答 1查看 734关注 0票数 1

我和PostgreSQL一起工作。

我需要将"http://www.xyz.com/some_uri/index1.html“转换为类似于”scdfdsffd“的形式(一些唯一键,基于表中的唯一键)。

换句话说..。URL是表中的唯一键,但我需要基于URL生成一个较小的唯一键。

我可以用标准的PostgreSQL 8.4做什么?

诚挚的问候,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-21 05:41:15

以下是几种方法:

a)为什么不使用自动递增的列或序列生成器来为每次插入生成唯一的整数?如果您的URL少于1亿个,则您的标识符很短且易于记忆。然而,如果这不是一种选择(例如,因为你不想让人们猜测if并以这种方式攻击数据库):

b)内置的MD5()函数可能会有所帮助:

代码语言:javascript
运行
复制
INSERT INTO table (pkey, url) VALUES (MD5('http://...'), 'http://...');

MD5()是一个散列函数,很可能会为每个URL提供一个惟一的标识符。我说“最有可能”是因为你从MD5得到了一个128位的散列,而散列冲突的可能性大约是2^-128 (大约10^-55)。

如果您需要较小的标识符,可以将MD5的结果减少到较少的字符数,但根据您使用的字符,可能会显著增加哈希冲突的可能性。

注:时间戳答案已编辑,因为它不能以任何方式解决原始问题。-BobG

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5736815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档