将300个字符的string转换为VBA中唯一可识别的8个字符的string

我devise了一个工具的用户界面,用户需要input一个长度最长为300个字符的“名称”,该工具生成一个文本文件(“Name”.txt),然后上传到“服务器”(大型机和Unix)。 我想将300个字符的string缩短为一个唯一可识别的8个字符的string(因为主要在大型机中),就像使用某种哈希algorithm的tinyurl。 我发现一个SHA1的实现,但结果string是40个字符长。 有人可以build议该algorithm的VBA实施?

由此产生的string的长度是8个字符的要求是严格的 – 我的猜测是,它应该是可行的,因为我们有一个inputstring的大小的限制。

我认为延斯的想法应该工作得很好。 如果截断SHA-1哈希不是你的东西,你可以使用一个CRC-32(32位〜8字节从0..f)。 (你可以尝试使用这个例子 )就碰撞而言,CRC-32是不太安全的,但最终取决于你。

您可以只取SHA1哈希的前八个字符。

尽pipe如此,哈希(像原来的40个char版本)并不保证是唯一的。 如果您需要唯一性,您可能需要将每个名称与其短版本一起存储,并且只发布目前尚未使用的短名称。 (这就是tinyurl所做的)