主题:如何分摊秘密(一)——从《鹿鼎记》中的四十二章经说起 -- 明日枯荷包
刚刚看到了楼主的帖子,很受启发,看来我还得花些时间,慢慢消化。
现在我正好有一个工作中的问题,没有太多头绪,我想这个与密码学有联系,想请楼主不吝指教:
现在有十万种商品,都已编码,标准是九位数字:999-99-9999(前三位是部,中间两位是类,后面四位是项, 让我们用英文字母,D-C-I来代表)。
D的取值范围是 002-300,C:00-99 I:0001-9999.
现在,我们要在这十万种商品抽取若干种(1 到 30 种)。我要给这每一种抽法,编一个唯一的代码。要如何入手?
最直观的办法当然是,先排序,然后拼接在一起。但是这样太占空间,意味着代码长度达到9×30=270字节。(如果不足30 种,用0填充)。
有没有一种比较简单的算法,产生唯一的编码,而且长度控制在20字节以内(当然更少就更好)?我们放宽条件:产生的编码可以是串string(字母与数字混合)?
我自己初步设想是,先计算抽取的商品种类数目(比如抽12种,就用12作为编码的一部分),然后再与这12种商品编码的均值拼接,这样11 个字节就够了,但这样,“撞码”的几率较大?
- 相关回复 上下关系8
🙂如何分摊秘密(一)——从《鹿鼎记》中的四十二章经说起 230 明日枯荷包 字3276 2010-08-11 08:21:11
🙂【求助】实际工作中的问题,好像要用到密码学
🙂用string就容易些,可以做到5*30=150位编码 13 meokey 字1721 2010-09-03 07:46:50
🙂谢谢各位,并汇报一下我最后的解决办法 6 乐趣到此 字491 2010-09-12 08:13:05
🙂可以用120个字节 相信逻辑和常理 字216 2012-02-07 22:42:33
🙂ding 1 hnlhl 字152 2010-09-03 22:05:28
🙂这个要看你的需求了 7 明日枯荷包 字693 2010-09-03 01:48:40
🙂等楼主解答,圆桌会议 3 ziotean 字157 2010-08-18 03:51:10