我正在开发一个系统,其中将为每个用户使用QRCode创建徽章,我需要读取QRCode并在公共屏幕上向用户显示特定信息。
QRCode阅读有点“棘手”。当我做这样的事情时,我使用带有枚举的Ids的MySQL(1,100,2304,9990)......巫婆只有5个字符。
但是,MongoDB密钥(我现在使用的数据库)由一个biggg密钥组成,例如52d35bf26bda8a5c8f8a22a8
有多个字符。
问题是什么:QRCode变得更大(数据越多,大小越大),并且在WebCam上快速读取它(甚至在HD中)也会变得更难。
所以,这是我的想法:使用Id的一部分,这样:52d35bf26bda8a5c8f8a22a8
可能变为52d35bf26bd
。
问题非常简单:我可以安全地使用部分ID密钥,而不会重新出现吗?我将拥有的最大元素将是大约1000个订单。
问题与QRCode无关,但它解释了我之所以这样做的原因。
答案 0 :(得分:0)
ObjectId是一个12字节的BSON类型,使用:
构造一个4字节的值,表示自Unix纪元以来的秒数, 一个3字节的机器标识符, 一个2字节的进程ID,和 一个3字节的计数器,以随机值开始。
一旦知道,它取决于您选择的objectId部分以及插入之间经过的时间。
此致
答案 1 :(得分:0)
无论是否安全,QR码之间的尺寸差异都不大。
使用完整字符串可以获得如下图像:
使用一半的字符会产生如下代码:
我建议即使是最便宜的智能手机也可以扫描两张图片中较大的一张 - 它根本不是很复杂。
答案 2 :(得分:0)
是的,您可以安全地将长十六进制字符串压缩到更高的字符串中以获得更少的字符,同时保留相同的值。
示例:强>
十六进制:52d35bf26bda8a5c8f8a22a8
Base64:UtNb8mvailyPiiKo
使用二进制甚至中文象形文字而不是base64可以进一步提出相同的想法。
可以使用Numeral Base Converter Tool来测试此概念。