开发者

Convert a 300 character string to a uniquely identifiable 8 character string in VBA

I have designed an user interface for a tool where the user needs to enter a "Name" which is maximum 300 characters long, and the tool generates a text file ("Name".txt) which is then uploaded to a "server" (Mainframe and Unix). I want to shorten the 300 character string into a uniquely identifiable 8 character string (because of issues primarily in mainframe), something like a tinyurl using some kind of hashing algorithm. I found a SHA1 implementation but t开发者_运维技巧he resulting string is 40 characters long. Can someone suggest a VBA implementation for the algorithm?

The requirement of the resulting string being 8 characters long is strict - my guess is that it should be doable given that we have a limitation on the size of the input string.


You can just take the first eight characters of the SHA1 Hash.

These hashes (like the original 40 char version) are not guaranteed to be unique, though. If you need uniqueness, you probably need to store each name together with its short version somewhere and issue only short names not used so far. (That's what tinyurl does.)


I think Jens's idea should work just fine. If truncating SHA-1 hash isn't your thing, you could use a CRC-32 (32 bits ~ 8 ascii chars from 0..f). (you can try using this example) CRC-32 is less safe as far as collisions are concerned, but it's up to you eventually.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜