问题标签 [hashids]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
url - 我应该将哈希值存储在数据库中还是在每次请求时对其进行解码?
我将在我的 url 中使用 hashids 而不是数据库 id,我应该在数据库表中为它们专用一个字段还是在 url 生成时将 ids 编码为 hashids 并将 hashids 解码为传入请求的 ids?
java - Hashids 独特空间
我想知道我是否遇到了错误,或者只是遇到了 Hashids 算法的限制。
我正在使用自定义字母表,它由所有大写字母组成,减去“O”和“I”以及数字 2 - 9。
在生成数百万个哈希后,我注意到重复项开始出现。我对此感到困惑,特别是因为 Hashids 声称重复是不可能的,因为该算法只是整数的十六进制版本。只要整数保持唯一(例如永远计数),散列也将保持唯一。
自定义字母表是否更容易出现重复?此外,我预计我的字母表的唯一哈希数为:32^7 = 34,359,738,368。在我的计数器达到这个数字之前,生成的 hashids 从 7 个字符长增加到 8 个。
有没有人知道为什么会这样?
编辑:另一个相当奇怪的异常情况:在生成 10647 个哈希之后,其余的(290 万加)要么以 K 或 X 开头。我开始认为自定义字母表加上盐的长度会影响字母的洗牌方式。
node.js - 使用Hashids保护数据库中的id
人们从 url like 获取数据,http://domain/api/user/1
并且1
是id
数据库中的(主键)。我们希望避免这种情况,以防止人们检测到 id。
然后我发现可以将 id 编码/解码为字符串的Hashids,url 可能会更改为http://domain/api/user/D42dhDLdk
乍一看这是一个很棒的解决方案,但是如何在实际应用中使用它呢?
1个编码
当从数据库中检索记录时,我们应该将 id 编码为字符串,这是做这项工作的正确位置吗?我能想到的唯一正确的地方是记录的反序列化,例如,当您提供 的数据时json
,您可以对相关ids
字符串进行编码,但您必须确保应该对哪些字段进行编码。
例如:
the id
of theuser
project
和 theicon_id
应该被编码,没有明确的规则来抽象它。
2 解码
从 db 检索数据时,您必须将字符串解码为 id,我认为我们可以在route
orcontroller
层执行此操作,但是仍然没有明确的规则来制作抽象中间件来处理此问题,因为encoded string
url 或查询参数。
我没有从谷歌找到任何通用的解决方案,所以我想知道你是如何处理这种问题的?
更新:
我正在使用 Mysql,并使用带有 sequelzie 的 Express 作为 ORM 工具。
php - 在 Laravel 5.2 中使用 vinkla/hashids 包来混淆 URL 中的 id
我已经在 laravel 5.2 上安装并配置了最新版本 (2.3.0) 的vinkla/hashids。
我不确定如何在我的 URL 路由上实现它的功能。
我想混淆显示在我的 URL 路由中的所有 id 属性。
例如 - http://localhost:8000/profile/3/edit应该变成http://localhost:8000/profile/xyz/edit。
我尝试通过将其添加到 App\Profile.php 来覆盖 Illuminate\Database\Eloquent\Model.php 上的以下方法,如下所示 -
我的 dd 没有显示,所以我没有正确覆盖它。
请您建议我应该如何正确实现此功能?
谢谢
php - Laravel 5.2 路由模型绑定错误导致 SQL 未知列错误
我正在尝试实现这个包 - https://github.com/vinkla/hashids来混淆 URL 中的所有 id。
我创建了一个全新安装的 laravel 5.2 并创建了一个名为 Orange.php 的模型,其中填充了表格-
我将以下内容添加到 routes.php-
我还通过向 Orange.php 添加以下函数来覆盖 getRouteKey-
因此 getRouteKey 应该对 ID 进行编码以显示 URL,例如 3 转到 hgfdh,然后我的路由绑定应该通过“id”通配符将自身应用于任何使用 id 参数的路由,以在这种情况下解码 OrangeController.php 的 ID。
尝试加载 http://localhost:8000/orange/3-时收到以下两个错误
我认为这个错误与 -
它是否试图绑定 Orange 的实例而不是 Orange 的 $id?如果是这样,我如何绑定 $id?
如果我注释掉 Route::model 定义我得到-
objective-c - 我去 hashids.c/hashids.h file not found 错误
我在我的项目中使用hashids
库,我想散列我的整数。但是当我在我的项目中添加NNLHashids.h
&时NNLHashids.m
,我得到了这个错误....
请指导我。
php - 在 Laravel 5.2 中使用 vinkla/hashids 包
我正在使用vinkla/hashids,我已经按照以下步骤
- 作曲家需要vinkla/hashids
- 将服务提供者添加到 providers 数组中的 config/app.php
- 如果你愿意,你可以使用门面。将 config/app.php 中的引用添加到您的别名数组。
- php artisan vendor:publish此步骤不会在配置文件中创建 hashid.php
- 使用 Vinkla\Hashids\Facades\Hashids;
- 哈希::编码(4815162342);
我得到了找不到 hashids 类的错误
python - 在 django 中实现 hashid
我一直在尝试在 django 模型中实现hashids 。我想根据模型获取 hashid,id
当模型的id=3
哈希编码应该是这样的时:hashid.encode(id)
. 问题是在我保存它们之前我无法获得 id 或 pk。我的想法是获取最新的对象id
并添加1
它们。但这对我来说不是解决方案。谁能帮我弄清楚???
django模型是:
c - 如何在 C 中散列 CPU ID
我正在尝试缩短我的微控制器(STM32F1)的 cpu id。
cpu id 由 3 个字(3 x 4 字节)组成。这是由 3 个单词构建的 id 字符串:980416578761680031125348904
我找到了一个非常有用的库来做到这一点。
该库是Hashids,并且有一个 C 代码。
我尝试使用“代码块 IDE”在 PC 上构建测试代码并且代码有效。
但是当我将代码移动到嵌入式端(Keil v5 IDE)时,我在 strdup() 函数上得到一个错误:“strdup 函数的隐式声明”。
该问题与 strdup 函数不是标准库函数有关,并且未包含在 string.h 中。
我将避免用自定义函数(模仿 strdup 的行为)替换 strdup 函数,以避免内存泄漏,因为 strdup 使用 malloc 复制字符串。
是否有不同的方法来压缩长数字?
谢谢您的帮助!
<---附录--->
这是使用 strdup 的函数。
python - 从自动递增的主键生成哈希 ID?
定义模型时,我可以像这样生成 uuid:
但我想要的是根据主键生成 hashid,如下所示(伪代码):(https://github.com/davidaurelio/hashids-python)
问题是我不能使用从 python 函数内部生成的 PK !!
我怎样才能做到这一点???