由于缺乏更好的术语,我打算建立一个多用户客户关系管理器(CRM),我想创建一个易于通过电子邮件,文本和口头方式传输给其他团队成员的唯一标识符
例如:
我上传了100个客户的列表,John Smith和他的电话号码都包含在该列表中。上传后,我想在数据库中为John Smith生成一个隐藏的指纹/唯一标识符,然后传播一个可以公开共享的12位数字。
在我看来像这样 - 约翰·史密斯+ ph:5557898095 =指纹:7e013d7962800374e6e67dd502f2d7c0显示给最终用户ID号:103457843983
我的问题是 - 我应该使用哪种方法或流程来获取姓名和电话号码,生成隐藏密钥,然后转换为与隐藏密钥相关联的可显示密钥?
我希望这清楚。我主要想要使用正确的逻辑过程。
答案 0 :(得分:2)
您可以使用crc32('fingerprint')作为最终用户ID号:
<?php
echo printf("%u", crc32('7e013d7962800374e6e67dd502f2d7c0')); //226407465310
?>
答案 1 :(得分:1)
我不明白你的问题究竟是什么,但我会尝试。
看起来你的意思是这样的:
一个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”中的示例中)。
(抱歉我的英语不好)。
答案 2 :(得分:0)
假设您的真实身份证是您的客户表中的auto_incremented字段,那么只需要第二个表将您的公共ID映射到真实ID。
假设您正在使用某种散列算法来生成公共ID,那么当您创建新用户以检测与现有用户的冲突时,在该表上执行查找是一个简单的过程,然后重新生成一个新的ID,直到没有冲突(例如,包括系统时间作为哈希输入的一部分,然后继续重新生成,直到找到唯一的ID)