Hashstring()

Wie ich gerade feststellen musste, reagieren Upper() und Lower() anders als erwartet (aus xBase Sicht) ... hierfür gibt es eine andere Funktion. Hier sollen solche allgemeinen Themen behandelt werden.
Antworten
satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Hashstring()

Beitrag von satmax »

Ich verwende unter Xbase++ Char2Hash() um passwörter zu verschlüsseln. Unter windev gibt es dafür Hashstring()

Char2Hash("password") == 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

HashString(HA_SHA_160,"password") == [ªaäɹ??‚%lø3~æØ

sieht ein wenig anders aus, habs über die Zwischenablage kopiert. Auf jeden Fall ganz anders wie erwartet.

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: Hashstring()

Beitrag von satmax »

Hier eine mögliche Lösung, für mich passt es:

Code: Alles auswählen

// Summary: convert a string in a Hex-String
// Compatible with Xbase++ and VC++
// Syntax:
//[ <Result> = ] Char2Hash (<sPassword> is string)
//
// Parameters:
//	sPassword (ANSI string):<specify the role of sPassword>
// Return Value:
// 	ANSI string: HASH as Hexstring 
//
// For instance:
// Indicate an example.
// cHex = Char2Hash("password")
// cHex is now:  5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8
// 
PROCEDURE Char2Hash(sPassword is string)
i is int
cHex is string = ""
cHash is ANSI string = HashString(HA_SHA_160,sPassword)
nLen is int = Length(cHash) 

FOR i = 1 TO nLen
	cHex += NumToString(Asc(cHash[[i]]),"02X") 
END

RESULT cHex

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: Hashstring()

Beitrag von Herbert »

Ich mache das Ganze mit Crypt resp. Uncrypt.

Code: Alles auswählen

Mitarbeiter.Passwort = Crypt(UnicodeToAnsi(EDT_Passwort), UnicodeToAnsi("meinLoesungswort"))

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: Hashstring()

Beitrag von satmax »

Geht nicht, muss auf eine gemeinsame DB zugreifen. Und da liegt das PW nur so vor.

Antworten