database - 你如何实现截断的 sha1 数据库 key ?

标签 database

我正在开发一个将实现服务 API 的 Multi-Tenancy 应用程序。出于安全原因和数据迁移/复制问题,我不想公开默认的自动递增 key ,因此我正在寻找替代 key 。 GUID/UUID 是一个明显的选择,但它们使 URL 有点长,在阅读有关它们的文章时,我看到 Google 使用“截断的 SHA1”作为它们的 URL ID。

这是如何运作的?据我了解,您对部分/所有对象内容进行哈希处理以得出 key 。我的对象会随着时间的推移而改变,因此对整个对象进行哈希处理是行不通的,因为 key 需要随着时间的推移保持不变。我可以实现 UUID 并对其进行哈希处理吗?将 SHA1 用于 key (例如最大记录数、冲突等)有哪些限制/问题?

我一直在 Google 上搜索,但没有找到正确的搜索查询。

/* 编辑:关于环境的更多信息*/
目前,我们是一家使用 Spring/Hibernate 和 MySQL 的 Java 商店。我们正在将核心开发切换到 Grails,这将是实现这一想法的地方。

最佳答案

我前段时间考虑过类似的问题,最后实现了Blowfish in the URL .它不是 super 安全,但提供的 URL 比例如 SHA256 短得多,而且它完全没有冲突。

关于database - 你如何实现截断的 sha1 数据库 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/458132/

相关文章:

mysql - MySQL中MyISAM表中延长某一字段的varchar长度有什么影响?

python - 尝试在 python : invalid dsn: invalid connection option "username" 中连接时出现 PostgreSQL 错误

mysql - 可以包含数据库表中预定义值的值的字段使用什么数据类型?

mysql - 如何确保对数据库的多个请求不被模仿

javascript - 使用外部数据库在多个站点上更新 html 和 css

javascript - Sequelize.js setter 函数没有按我的预期工作

c++ - C++ 的 SQL 请求助手

mysql - 在 MySQL 中有条件地使用 REGEXP

ios - 如何在 Swift 中将字典数组存储到 Realm 数据库

sql - 缺少表的 FROM 子句条目