相关疑难解决方法(0)

独特的密钥生成

我正在寻找一种方法,特别是在PHP中,我将保证始终获得一个独特的密钥.

我做了以下事情:

strtolower(substr(crypt(time()), 0, 7));
Run Code Online (Sandbox Code Playgroud)

但我发现,偶尔我会得到一个重复的密钥(很少,但经常就足够了).

我也想过这样做:

strtolower(substr(crypt(uniqid(rand(), true)), 0, 7));
Run Code Online (Sandbox Code Playgroud)

但是根据PHP网站,uniqid()可以,如果uniqid()在相同的微秒内被调用两次,它可以生成相同的密钥.我认为添加rand()很少会,但仍然可能.

在上面提到的行之后,我也删除了诸如L和O之类的字符,因此对用户来说不那么容易混淆.这可能是重复原因的一部分,但仍然是必要的.

我想到的一个选择是创建一个生成密钥的网站,将其存储在数据库中,确保它完全独一无二.

还有其他想法吗?是否有任何已经这样做的网站有某种API或只是返回密钥.我找到了http://userident.com,但我不确定密钥是否完全独特.

这需要在后台运行而无需任何用户输入.

php security passwords web-services

12
推荐指数
1
解决办法
1万
查看次数

字符串的哈希值具有特定长度

有没有办法生成字符串的散列,以便散列本身具有特定的长度?我有一个生成41字节哈希值(SHA-1)的函数,但我需要它最多33个字节(由于某些硬件限制).如果我将41字节的哈希截断为33,我可能(当然!)失去了唯一性.

或者实际上我认为MD5算法很适合,如果我能在你的帮助下找到一些C代码.

编辑:谢谢大家的快速和知识渊博的回复.我选择使用MD5哈希,它适合我的目的.唯一性是一个重要问题,但我不认为这些哈希的数量在任何给定时间都非常大 - 这些哈希代表家庭局域网上的软件服务器,因此最多可能有5个,可能还有10个运行.

c++ algorithm hash

6
推荐指数
2
解决办法
5078
查看次数

标签 统计

algorithm ×1

c++ ×1

hash ×1

passwords ×1

php ×1

security ×1

web-services ×1