西西河

主题:如何分摊秘密(一)——从《鹿鼎记》中的四十二章经说起 -- 明日枯荷包

共:💬63 🌺987
全看分页树展 · 主题 跟帖
家园 【求助】实际工作中的问题,好像要用到密码学

刚刚看到了楼主的帖子,很受启发,看来我还得花些时间,慢慢消化。

现在我正好有一个工作中的问题,没有太多头绪,我想这个与密码学有联系,想请楼主不吝指教:

现在有十万种商品,都已编码,标准是九位数字: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 个字节就够了,但这样,“撞码”的几率较大?

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河