我正在开发一个系统,其中将为每个用户创建一个QRCode徽章,我需要阅读该QRCode并在公共屏幕上向用户显示特定信息。使用部分MongoDB ID密钥是否安全
QRCode阅读有点“棘手”。当我做了这样的事情时,我使用了枚举ID(1,100,2304,9990)的MySQL ......女巫只有大约5个字符。
但是,MongoDB密钥(我现在使用的DB)由一个biggg密钥组成,如52d35bf26bda8a5c8f8a22a8
女巫拥有许多字符。
这是什么问题:QRCode变得更大(更多的数据,更大的尺寸),并变得更难以在WebCam(甚至在HD)上快速阅读它。
所以,这里是我的想法:使用部分Id,所以:52d35bf26bda8a5c8f8a22a8
也许变成52d35bf26bd
。
问题很简单:我可以安全地使用部分ID密钥,而不必重新发生?我将拥有的最大元素将是大约1000阶。
这个问题与QRCode无关,但它解释了我为什么要这样做。
否...剪裁ObjectId并将其用作唯一标识符是一个坏主意。它可能更好地散列到你想要的大小(碰撞仍然是可能的)。你可以阅读ObjectId是如何在这里构建的:http://docs.mongodb.org/manual/reference/object-id/ – joao
@joao,看起来ObjectID以3byte计数器结束,女巫随机启动,但它不可冲突。我对吗? –
如果您删除了多个文档,它们将在相同的秒,机器和进程中插入,它们将发生冲突。这是一个相当危险的情况,因为在1秒内有超过1插入是很容易实现... – joao