Visual Basic 6.0 хэш-функция - PullRequest
5 голосов
/ 28 ноября 2008

В моем приложении мне нужно хешировать строку, прежде чем я сохраню ее в текстовый файл. Кто-нибудь знает, как это сделать?

Ответы [ 7 ]

2 голосов
/ 12 декабря 2008

Пример использования CAPICOM для получения хеша

Добавить CAPICOM.DLL в качестве ссылки на проект

использование Ключ DIM As String DIM sValue As String

Dim sEncrypedValue as String

Dim oCAP As CAPICOM.EncryptedData Установить oCAP = Новый CAPICOM.EncryptedData

С oCAP. .Algorithm.KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS .Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_RC4
.SetSecret ключ .Content = sValue оканчивается на

sEncrypedValue = objCAP.Encrypt (CAPICOM_ENCODE_BASE64)

расшифровать: oCAP.SetSecret key oCAP.Content = sEncrypedValue sValue = oCAP.Decrypt (CAPICOM_ENCODE_BASE64)

2 голосов
/ 06 декабря 2008

Вот хэш-функция CRC32:

http://www.vbcode.com/asp/showsn.asp?theID=471

2 голосов
/ 28 ноября 2008

Для каких целей вы используете хеш? Это важно, потому что некоторые алгоритмы хеширования, такие как MD5, подходят для некоторых целей, но не для других.

Эта ссылка показывает реализацию VB6 MD5 .

1 голос
/ 18 февраля 2009

(комментирование требует 50 повторений)

Ссылка, предоставленная Джоэлем, хороша, но учтите, что вам нужно изменить начальное значение на стандартное, чтобы оно получило тот же CRC32, что и все остальные:

Дополнительное семя ByVal As Long = & HEDB88320

Надеюсь, это сэкономит кому-то еще 30 минут работы!

0 голосов
/ 30 января 2009

Вы можете реализовать это в C # .net dll, используя SHA128Managed

0 голосов
/ 28 ноября 2008

У меня были очень хорошие результаты с этим, но реализация c

SDBM

этот алгоритм был создан для библиотеки базы данных sdbm (переопределение общедоступного домена ndbm). было обнаружено, что он хорошо справляется со скремблированием битов, что приводит к лучшему распределению ключей и меньшему количеству разбиений. это также бывает хорошая общая функция хеширования с хорошим распределением. фактическая функция это hash (i) = hash (i - 1) * 65599 + str [i]; ниже включена более быстрая версия, используемая в gawk. [существует даже более быстрая версия устройства для маффа] магическая константа 65599 была выбрана из воздуха при экспериментировании с разными константами и оказывается простой. это один из алгоритмов, используемых в Беркли БД (см. Sleycat) и в других местах.

static unsigned long
sdbm(str)
unsigned char *str;
{
    unsigned long hash = 0;
    int c;

    while (c = *str++)
        hash = c + (hash << 6) + (hash << 16) - hash;

    return hash;
}

Чтобы перенести его на vb, расчет идет примерно так. В основном он проходит по символам строки слева направо, вычисляя хеш как

newHash = the character (c) + (previousHashValue * 2^6) + 
                              (previousHashValue * 2^16) - 
                               previousHashValue**
previousHashValue = newHash
0 голосов
/ 28 ноября 2008

Вы можете попробовать с CriptoASP. Не обращайте внимания на «ASP» в названии, это ActiveX DLL, которую вы можете создать из VB6. Он предоставляет методы для генерации случайных чисел, хэши с MD2, MD4, MD5 и SHA и некоторый вид шифрования / дешифрования.

Вы можете скачать его с CriptoASP

Извините, язык сети на испанском, но я думаю, что вы можете очень легко использовать COM с примерами внизу Док. для CriptoASP просто измените Server.CreateObject новым предложением объекта в VB6.

Скажите, хотите ли вы перевести примеры или документацию.

Чтобы сохранить его в текстовом файле, вы можете использовать FSO (File System Object).

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