我设计了一个工具的用户界面,用户需要输入最多300个字符的“名称”,并且该工具生成一个文本文件(“Name”.txt),然后将其上传到“服务器”(Mainframe和Unix)。我想将300个字符的字符串缩短为唯一可识别的8个字符的字符串(因为问题主要在大型机中),就像使用某种哈希算法的tinyurl。我找到了一个SHA1实现,但结果字符串长度为40个字符。有人可以为该算法提供VBA实现吗?将300个字符的字符串转换为VBA中唯一可识别的8个字符的字符串
生成的字符串长度为8个字符的要求是严格的 - 我的猜测是,它应该是可行的,因为我们对输入字符串的大小有限制。
虽然我对统计数学并没有任何了解,但只是将前八个字符切掉会大大增加碰撞的几率。 – MvanGeest 2010-07-29 08:37:10
@MvanGeest:是的,它会的,但它可能还是够好的。如果您需要8个字符的base64编码散列,则您有64^8 = 2.8E14个不同的组合。如果哈希值相当随机,在约2000万条目中碰撞的几率达到50%,有200万条条目的机会不到1%。 – Jens 2010-07-29 08:53:07