较为困惑的防伪二维码开发需求,想请教大家一些想法

2016-05-25 19:46:51 +08:00
 pming1


类似这样的防伪二维码,后边有一串序列号,根据序列号生成对应的二维码(带序列号参数的链接),然后左边是 1~8,8 个固定数字,数字上面有不定数量的随机位置的随机颜色的点。

问题来了,通过这一串序列号,如何生成这些唯一的点呢?(包括数量,位置,颜色),,, 想破脑袋都没能想出来,,, TAT

4365 次点击
所在节点    Node.js
22 条回复
bearice
2016-05-25 19:59:01 +08:00
吧序列号当成随机种子即可
a342191555
2016-05-25 20:01:30 +08:00
看完了没看明白这个问题和二维码有啥关系- -
debiann
2016-05-25 20:04:34 +08:00
用一一映射的加密算法对序列号作变换,得到另一个数字。对得到的数字作分割,分三份,作为点的横坐标,纵坐标,颜色参数
loading
2016-05-25 20:07:22 +08:00
你要那几个数字干嘛?二维码每次都重新生成不就好了?

你看看支付宝的支付二维码…


求你们不要做这些二次的所谓自主产权的开发了…
debiann
2016-05-25 20:24:52 +08:00
@loading 如果这东西是贴在商品上的呢
loading
2016-05-25 20:36:08 +08:00
@debiann 批量生成!记得使用刮刮刮刮…
loading
2016-05-25 20:39:50 +08:00
@debiann 其实用这个做商品防伪没用!

记得那些刮刮的序列号吗?上面提供的验证短信号码就是假的…


如果用二维码做一次性 url 验证,贴在商品上的都是瞎扯,做一个假的钓鱼站点,不就妥了…
debiann
2016-05-25 21:00:37 +08:00
@loading 你没理解这个东西的作用。用序列号生成最左边的图片,生成的算法和秘钥只有发布者知道。钓鱼网站是给不出正确的图案的。
yeyeye
2016-05-25 21:06:00 +08:00
这个世界没有二维码搞不定的事情 如果有 那就 2 个二维码!

最后,我仍然是没明白楼主到底想要搞什么鬼,按说算法什么的,你爱怎样弄就怎样弄啊,为什么要想不通……

@pming1 @bearice @a342191555 @debiann @loading
pming1
2016-05-25 21:16:36 +08:00
@yeyeye 这是一个客户的需求,是贴在他们的商品上面用作防伪标签的,防伪最主要体现在二维码左边的那些随机数量随机位置随机颜色的点
pming1
2016-05-25 21:17:36 +08:00
@yeyeye 我是想不通,如何根据已知的序列号,生成唯一与之对应的这些彩色点
cnnblike
2016-05-25 21:17:54 +08:00
楼主你去问一下,能不能把这些点放在二维码里面,然后你就只需要把二维码中的某几个点染成红色就行了
pming1
2016-05-25 21:19:15 +08:00
@bearice 随机种子?但如何保证,每次通过这个序列号,都能生成一样的点呢?
pming1
2016-05-25 21:20:21 +08:00
@a342191555 嗯,重点不是二维码,是二维码左边的彩色点,不知道如何根据序列号生成唯一的一系列点(包括数量,颜色,位置)
soland
2016-05-25 21:23:55 +08:00
@pming1 这个有什么能想不通的,把已知的序列号变成坐标不就完了。而且这需求是不是本身就没想明白,就是个伪需求。
yeyeye
2016-05-25 21:59:55 +08:00
@pming1 “但如何保证,每次通过这个序列号,都能生成一样的点呢?”

你去看看身份证号码的计算方法吧 最后一位是计算出来的 而你那个点所在的位置可以用 xy 轴来表示,说白了就是生成 2 个数字,然后按照计算出来的 XY 轴印刷点,有什么问题?反正我觉得根本就不知道你的难点在哪,或者说……根本就不存在什么难点。

还有一种方法 根本不用按照什么什么来计算什么什么 直接随机生成坐标 和序列号的关系 然后存到数据库里查就行了?
binux
2016-05-25 22:07:51 +08:00
你把二维码和那些点看成数字,然后不就是一个数字到另一个数字的映射吗。这就是问题抽象能力啊。
dixyes
2016-05-25 23:13:54 +08:00
hash 下序列号 然后取一个三四位十进制摘要(从序列号到摘要的算法得保密)
然后奇数位出现一个数字就在对应的格子打个绿色 偶数位打个红色(机智如我
a342191555
2016-05-25 23:16:32 +08:00
@pming1 用个固定算法 HASH 一下这个序列号吧,另外随机和不重复是相矛盾的,只能说碰撞概率较小,如果一定要不重复的话遇到重复时再人工处理下吧。
随便举个解法,供参考。 HASH 一个 5 维向量, 2 维用在坐标上,剩下 3 维用在 RGB 原色上。
EchoWhale
2016-05-26 11:22:39 +08:00
楼主你的真正需求是防伪,但是我有点想不明白:
就算你的右边的序列号能生成唯一的左边的点点,就能防伪了吗?
用户的验证场景能不能说一下?是不是这样:
用户扫二维码,然后会跳到一个已经包含了序列号信息的一个网页。然后用户在页面上输入左边的点点信息,如果和你实时生成或者预存在数据库里的点点信息一致,就告诉用户这是正品?
如果是这样,山寨产品很容易造假啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/281240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX