如何设置Hashids的最大长度?

时间:2016-10-09 00:49:12

标签: hash hashids

我在Hashids项目中使用Djangohttp://hashids.org/python/)。

我想创建固定长度的哈希。

Hashids仅支持min_length

hash_id = Hashids(
    salt=os.environ.get("SALT"),
    min_length=10,
)

如何设置hash_id的固定长度(例如10个字符)?

3 个答案:

答案 0 :(得分:0)

虽然我没有使用该库的python版本,但我仍然觉得我可以回答,因为我维护.NET版本并且他们大多数都有相同的算法。

从逻辑上考虑这个问题,修复哈希的长度(或设置最大长度)并允许用户定义字母和盐,限制了哈希的可能变化,因此也限制了哪些数字可以被编码。

我猜这就是今天无法使用图书馆的原因。

答案 1 :(得分:0)

您可以在哈希表中设置“最小长度”

例如:

hashids = Hashids(min_length=16, salt="my salt")
hashid = hashids.encode(1) # '4q2VolejRejNmGQB'

有关更多详细信息,请单击here

答案 2 :(得分:0)

在php laravel中,可以如下所示实现。

<?php

namespace App\Hashing;

use Hashids\Hashids;

    class Hash {
        private $salt_key;
        private $min_length;
        private $hashid;

        public function __construct(){
            $this->salt_key = '5OtYLj/PtkLOpQewWdEj+jklT+oMjlJY7=';
            $this->min_length = 15;
            $this->hashid = new Hashids($this->salt_key, $this->min_length);
        }

        public function encodeId($id){
            $hashed_id = $this->hashid->encode($id);
            return $hashed_id;
        }

        public function decodeId($hashed_id){
            $id = $this->hashid->decode($hashed_id);
            return $id;
        }
    }

    $hash = new Hash();
    $hashed_id = $hash->encodeId(1);
    echo '<pre>';
    print_r($hashed_id);
    echo '</pre>';

    echo "<pre>";
    $id = $hash->decodeId($hashed_id);
    print_r($id[0]);
    echo "</pre>";