In meiner Anwendung muss ich eine Zeichenfolge Hash, bevor ich es in eine Textdatei speichern. Weiß jemand, wie man das macht?Visual Basic 6.0 Hash-Funktion
Antwort
Sie können mit CriptoASP versuchen. Es macht nichts mit dem 'ASP' im Namen, es ist eine ActiveX DLL, die Sie von VB6 instanziieren können. Es bietet Methoden zum Generieren von Zufallszahlen, Hashes mit MD2, MD4, MD5 und SHA und eine Art von Verschlüsselung/Entschlüsselung.
Sie können es herunterladen von CriptoASP
Es tut mir leid, Web-Sprache in Spanisch, aber ich glaube, Sie mit den Beispielen an der Unterseite des Doc. for CriptoASP die sehr einfache Bedienung der COM undertand kann nur Server ändern .CreateObject mit dem neuen Objektsatz in VB6.
Sagen Sie mir, wenn Sie eine Übersetzung der Beispiele oder Dokumentation wollen.
Um es in eine Textdatei zu speichern, können Sie FSO (File System Object) verwenden.
Zu welchem Zweck verwenden Sie den Hash? Dies ist wichtig, da einige Hash-Algorithmen wie MD5 für einige Zwecke geeignet sind, andere jedoch nicht.
Dieser Link zeigt eine VB6 implementation of MD5.
Der Link ist nicht mehr gültig. Gebrochen. @RoadWarrior – Ahmad
@Ahmad, ich habe den Link behoben. – RoadWarrior
Ich habe sehr gute Ergebnisse mit diesem hatte, aber die Umsetzung ist c
SDBM
dieser Algorithmus für SDBM erstellt wurde (eine Public-Domain-Neuimplementierung von ndbm) Datenbankbibliothek. Es hat sich gezeigt, dass es beim Scrappen von Bits gut funktioniert, was eine bessere Verteilung der Schlüssel und weniger Splits bewirkt. es ist auch eine gute allgemeine Hash-Funktion mit guter Verteilung. die tatsächliche Funktion ist Hash (i) = Hash (i - 1) * 65599 + str [i]; Was unten enthalten ist, ist die schnellere Version in Gawk verwendet. [Es gibt sogar eine schnellere, duff-device-Version] die magische Konstante 65599 wurde aus dem Nichts ausgesucht, während mit verschiedenen Konstanten experimentiert, und erweist sich als eine Primzahl. Dies ist einer der in berkeley db (siehe sleepycat) und anderswo verwendeten Algorithmen.
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;
}
Um Portierung auf vb, geht die Berechnung so etwas wie dieses. Im Grunde geht es durch die Zeichen der Zeichenfolge von links nach rechts, den Hash als
newHash = the character (c) + (previousHashValue * 2^6) +
(previousHashValue * 2^16) -
previousHashValue**
previousHashValue = newHash
Der ganze Punkt des shl (<<) ist es zu vermeiden, die Multiplikation mit 65599 zu verwenden, was relativ langsam ist. Der VB-Port hat ZWEI Multiplikationen. Es wäre schneller, dies zu tun: newHash = das Zeichen (c) + (previousHashValue * 65599) – Steve
Berechnung Hier ist eine CRC32 Hash-Funktion:
Beispiel der Verwendung von CAPICOM einen Hash zu erhalten
hinzufügen Capicom.dll als Projektverweis
Anwendungen DIM Taste As String DIM sValue As String
Dim sEncrypedValue als String
Dim OCAP Als CAPICOM.EncryptedData Set OCAP = New CAPICOM.EncryptedData
Mit oCAP. .Algorithm.KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS .Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_RC4
.SetSecret Schlüssel .content = sValue Ende mit
sEncrypedValue = objCAP.Encrypt (CAPICOM_ENCODE_BASE64)
zu entschlüsseln: oCAP.SetSecret Schlüssel oCAP.Content = sEncrypedValue sValue = oCAP.Decrypt (CAPICOM_ENCODE_BASE64)
Sie es in einer C# .net dl implementieren könnte l mit SHA128Managed
(kommentiert erfordert 50 rep)
Der Link, der Joel ist gut zur Verfügung gestellt, aber beachten Sie, dass Sie den Startwert der Norm ändern müssen für sie die gleiche CRC32 wie jeder produzieren sonst :
Optional ByVal Seed As Long = & HEDB88320
Hoffnung, dass jemand anderes 30 Minuten Arbeit spart!
Sie sollten angeben, was der Zweck des Hashing ist, wie ein Kennwort zu verbergen, Suche, etc. – PhiLho