唯一密钥生成逻辑

2024-06-06 18:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正计划建立一个多用户客户关系经理(CRM),因为没有更好的术语,我想创建一个唯一的标识符,可以通过电子邮件、文本和口头方式传递给其他团队成员。在

例如:

我上传了我的100个客户名单,其中包括约翰·史密斯和他的电话号码。上传后,我想在数据库中为johnsmith生成一个隐藏的指纹/唯一标识符,然后传播一个可以公开共享的12位数字。在

在我的脑海中是这样的-john smith+ph:5557898095=指纹:7e013d7962800374e6e67dd502f2d7c0显示到最终用户id号:103457843983

我的问题是-我应该使用什么方法或过程来获取姓名和电话号码,生成一个隐藏的密钥,然后转换成与隐藏密钥链接的可显示密钥?在

我希望这一切都清楚。我主要想使用正确的逻辑过程。在


Tags: 文本过程电子邮件方式密钥电话号码标识符计划
3条回答

假设您的real ID是customer表中自动递增的字段,那么就有第二个表将您的公共ID映射到实际ID

假设您使用某种哈希算法来生成公共ID,那么在创建新用户以检测与现有用户的冲突时,对该表进行查找将是一个简单的过程,然后重新生成新的ID,直到没有冲突为止(例如,将系统时间作为哈希输入的一部分,然后继续重新生成,直到找到唯一的ID)

我不明白你到底有什么问题,但我会尽力的。在

你的意思好像是这样的:

一个sql表,它保存公共和私有id(也许还有其他东西)。在

您可以生成如下密钥:

$chars = '0123456789abcedfghijklmnopqrstuvwxyz';

function generateKey($length, $charsLength = 10) {
    global $chars;

    $key = '';

    for($i=0;$i<$length;++$i) {
        $key .= $chars[rand(0, $charsLength - 1)];
    }

    return $key;
}

$keyPublic = generateKey(10); // Public key with length 10

// Now check if the key already exist
while(mysql_num_rows(mysql_select('SELECT publicKey FROM keys WHERE publicKey = \''.$keyPublic.'\')) === 1) {
    $keyPublic = generateKey(10);
}

$keyPrivate = generateKey(10, 36); // Private key with length 10

// Now check if the key already exist
while(mysql_num_rows(mysql_select('SELECT privateKey FROM keys WHERE privateKey = \''.$keyPrivate.'\')) === 1) {
    $keyPrivate = generateKey(10, 36);
}

在本例中,生成了两个键,检查键是否已经存在。(在表“keys”中的示例中)。在

(对不起我的英语不好)。在

您可以使用crc32('fingerprint')作为最终用户标识号:

<?php 
  echo printf("%u", crc32('7e013d7962800374e6e67dd502f2d7c0')); //226407465310
?>

相关问题 更多 >