2008-11-28 11 views

Odpowiedz

0

Możesz spróbować z CriptoASP. Nie zwracaj uwagi na "ASP" w nazwie, jest to DLL ActiveX, który możesz utworzyć z VB6. Dostarcza metod generowania liczb losowych, skrótów z MD2, MD4, MD5 i SHA oraz pewnego rodzaju szyfrowania/odszyfrowywania.

Można go pobrać z CriptoASP

przykro mi, język internetowej jest w języku hiszpańskim, ale myślę, że można undertand bardzo łatwe korzystanie z COM z przykładów na dole Doc. for CriptoASP, wystarczy zmienić Server .CreateObject z nowym zdaniem obiektu w VB6.

Powiedz, jeśli chcesz przetłumaczyć przykłady lub dokumentację.

Aby zapisać plik tekstowy, można użyć FSO (File System Object).

2

W jakim celu używasz hasha? Ma to znaczenie, ponieważ niektóre algorytmy mieszania, takie jak MD5, są odpowiednie do pewnych celów, ale nie do innych.

Ten link pokazuje VB6 implementation of MD5.

+0

Link nie jest już ważny. Złamany. @RoadWarrior – Ahmad

+0

@Ahmad, naprawiłem link. – RoadWarrior

0

miałem bardzo dobre wyniki z tego jednego, ale realizacja jest c

SDBM

algorytm ten został stworzony dla SDBM (a reimplementacji publicznej domeny ndbm) biblioteki bazy danych. Stwierdzono, że dobrze radzi sobie ze skrótami, co powoduje lepszą dystrybucję kluczy i mniej podziałów. Zdarza się też, że jest dobrą ogólną funkcją mieszającą z dobrą dystrybucją. rzeczywistą funkcją jest hash (i) = hash (i - 1) * 65599 + str [i]; to, co znajduje się poniżej, to szybsza wersja używana w gawk. [Istnieje nawet szybsza wersja urządzenia typu duff-device] Magiczna stała 65599 została wybrana z cienkiego powietrza podczas eksperymentowania z różnymi stałymi i okazała się być pierwszą. jest to jeden z algorytmów używanych w berkeley db (patrz sleepycat) i gdzie indziej.

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; 
} 

Aby przenieść go do VB, obliczenia są podobne. zasadzie to idzie przez bohaterów ciąg od lewej do prawej, obliczania hash jako

newHash = the character (c) + (previousHashValue * 2^6) + 
           (previousHashValue * 2^16) - 
           previousHashValue** 
previousHashValue = newHash 
+0

Cały punkt shl (<<) polega na tym, aby unikać pomnażania przez 65599, który jest relatywnie wolny. Port VB ma DWA multiplikacje. Szybciej byłoby to zrobić: newHash = postać (c) + (previousHashValue * 65599) – Steve

2

Przykład wykorzystania CAPICOM uzyskać hash

Dodaj CAPICOM.DLL jako odniesienie projektu

rozchodów kluczowym DIM jako ciąg DIM sValue jako ciąg

Dim sEncrypedValue jako String

Dim OCAP Jak CAPICOM.EncryptedData Set OCAP = new CAPICOM.EncryptedData

Z oCAP. .Algorithm.KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS .Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_RC4
.SetSecret klucz .content = sValue koniec z

sEncrypedValue = objCAP.Encrypt (CAPICOM_ENCODE_BASE64)

odszyfrować: oCAP.SetSecret kluczem oCAP.Content = sEncrypedValue sValue = oCAP.Decrypt (CAPICOM_ENCODE_BASE64)

0

można wdrożyć go w C# .NET dl l za pomocą SHA128Managed

1

(komentowania wymaga 50 rep)

Link Joel warunkiem, że jest dobra, ale należy pamiętać, że trzeba zmienić wartość początkową do normy na to, aby wytworzyć taką samą jak wszyscy CRC32 :

Opcjonalnie ByVal Seed dopóki = & HEDB88320

nadzieję, że ktoś oszczędza 30 minut pracy!