W mojej aplikacji potrzebuję zaszyfrować ciąg przed zapisaniem go w pliku tekstowym. Czy ktoś wie, jak to zrobić?Funkcja haszowania Visual Basic 6.0
Odpowiedz
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).
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.
Link nie jest już ważny. Złamany. @RoadWarrior – Ahmad
@Ahmad, naprawiłem link. – RoadWarrior
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
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
Oto funkcja CRC32 hash:
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)
można wdrożyć go w C# .NET dl l za pomocą SHA128Managed
(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!
Powinieneś wskazać, jaki jest cel skrótu, np. Ukrywanie hasła, wyszukiwanie itp. – PhiLho