Преобразование строки из 300 символов в уникальную 8-символьную строку в VBA - PullRequest
1 голос
/ 29 июля 2010

Я разработал пользовательский интерфейс для инструмента, в котором пользователю необходимо ввести «Имя» длиной не более 300 символов, и инструмент генерирует текстовый файл («Имя» .txt), который затем загружается в «сервер "(мэйнфреймы и Unix).Я хочу сократить 300-символьную строку до уникально идентифицируемой 8-символьной строки (из-за проблем, главным образом, в мейнфрейме), что-то вроде tinyurl, использующего какой-то алгоритм хеширования.Я нашел реализацию SHA1, но длина получаемой строки составляет 40 символов.Может кто-нибудь предложить реализацию VBA для алгоритма?

Требование к результирующей строке длиной 8 символов строгое - я предполагаю, что это должно быть выполнимо, учитывая, что у нас есть ограничение на размер входной строки.

Ответы [ 2 ]

3 голосов
/ 29 июля 2010

Вы можете просто взять первые восемь символов хэша SHA1.

Хотя эти хэши (как и оригинальная версия с 40 символами) не гарантированно являются уникальными.Если вам нужна уникальность, вам, вероятно, нужно где-то хранить каждое имя вместе с его короткой версией и выдавать только короткие имена, которые до сих пор не использовались.(Это то, что делает tinyurl.)

1 голос
/ 29 июля 2010

Я думаю, что идея Дженса должна работать просто отлично. Если усечение SHA-1 не является вашей задачей, вы можете использовать CRC-32 (32 бита ~ 8 символов ascii от 0..f). (вы можете попробовать использовать этот пример ) CRC-32 менее безопасен с точки зрения коллизий, но в конечном итоге это зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...