encrypt und windows

encrypt und windows

am 01.01.2006 18:28:30 von Billy Abrecht

Hallo NG,

zu erstmal Alles Gute im neuen Jahr.

jetzt zu meinem kleinen Problemchen
ich möchte folgendes statement absenden:
| SELECT * FROM `reglist`
| WHERE nick = 'test' and login_pwd = encrypt('123456',login_pwd)

es tut aber nicht so wie ich es gern hötte.
versuche ich z.B.
| SELECT encrypt('password','salt')
bekomm ich immer .

und da las ich in der doku:
| ENCRYPT(str[,salt])
|
| Encrypt str using the Unix crypt() system call. The salt argument
| should be a string with two characters. (As of MySQL 3.22.16, salt
| may be longer than two characters.)
|
| mysql> SELECT ENCRYPT('hello');
| -> 'VxuFAJXVARROc'
|
| ENCRYPT() ignores all but the first 8 characters of str, at least on
| some systems. This behavior is determined by the implementation of
| the underlying crypt() system call. If crypt() is not available on
| your system, ENCRYPT() always returns NULL. Because of this, we
| recommend that you use MD5() or SHA1() instead, because these two
| functions exist on all platforms.

und jetzt meine Frage, kann ich dies irgendwie auf Windows zum laufen
kriegen?
meine MySQL version ist: 4.1.11-nt
mein System ist ein WinXP SP2

wenn es nach mir gehen würde, dann hätte ich natürlich lieber MD5
genommen, jedoch steht mir diese option nicht offen.

Danke im voraus für eure mühen und eure hilfe.

Grüsse Billy

Re: encrypt und windows

am 01.01.2006 19:00:28 von Axel Schwenke

Billy Abrecht wrote:

> meine MySQL version ist: 4.1.11-nt
> mein System ist ein WinXP SP2

>| SELECT encrypt('password','salt')
> bekomm ich immer .

Richtig. Die ENCRYPT() Funktion von MySQL basiert auf der crypt (3)
Funktion aus der Unix-C-Standardlibrary. Diese Funktion ist auf
Windows-Systemen typischerweise nicht anzufinden und MySQL liefert
darum auf diesen Systemen immer NULL.

> und jetzt meine Frage, kann ich dies irgendwie auf Windows zum laufen
> kriegen?

Das ist zumindest mit Aufwand verbunden. Du mußt MySQL selber
compilieren und eine Implementierung von crypt() bereitstellen.
Laut Manpage ist crypt (3) definiert in folgenden Standards:
SVID, X/OPEN, BSD 4.3, POSIX 1003.1-2001
Eventuell wirst du ja schon im POSIX-Kompatibilitäts-Subsystem
von Windows fündig. Sonst gibts das z.B. hier:


Wenn du das beides hinbekommst, ist der Rest trivial[1]: im Projekt-
file für das 'mysqld' Target trägst du die Library mit der crypt()
Implementierung ein und definierst das Makro HAVE_CRYPT. Dann flugs
neu compiliert und du solltest ein funktionierendes ENCRYPT haben.

[1] der Grad der Trivialität liegt im Auge des Betrachters. YMMV ;-)

> wenn es nach mir gehen würde, dann hätte ich natürlich lieber MD5
> genommen, jedoch steht mir diese option nicht offen.

Das ist schade.


PS: mein erstes Posting dieses Jahr. Ich wünsche allen Lesern ein
gesundes und erfolgreiches neues Jahr!

XL

Re: encrypt und windows

am 01.01.2006 19:27:49 von Billy Abrecht

Axel Schwenke schrieb:

Danke für Deine schnelle Antwort.

[viel gesnippt]

> Das ist zumindest mit Aufwand verbunden. Du mußt MySQL selber
> compilieren und eine Implementierung von crypt() bereitstellen.
> Laut Manpage ist crypt (3) definiert in folgenden Standards:
> SVID, X/OPEN, BSD 4.3, POSIX 1003.1-2001
> Eventuell wirst du ja schon im POSIX-Kompatibilitäts-Subsystem
> von Windows fündig. Sonst gibts das z.B. hier:
>
>
> Wenn du das beides hinbekommst, ist der Rest trivial[1]: im Projekt-
> file für das 'mysqld' Target trägst du die Library mit der crypt()
> Implementierung ein und definierst das Makro HAVE_CRYPT. Dann flugs
> neu compiliert und du solltest ein funktionierendes ENCRYPT haben.
>
> [1] der Grad der Trivialität liegt im Auge des Betrachters. YMMV ;-)

Dann werd ich wohl doch lieber einen anderen Weg suchen :)

>>wenn es nach mir gehen würde, dann hätte ich natürlich lieber MD5
>>genommen, jedoch steht mir diese option nicht offen.
>
> Das ist schade.

ja ist es wirklich. *soifz*

> PS: mein erstes Posting dieses Jahr. Ich wünsche allen Lesern ein
> gesundes und erfolgreiches neues Jahr!

Danke für Deine umfassende Antwort.

Grüsse Billy

Re: encrypt und windows

am 02.01.2006 11:50:01 von Martin Schneider

Hi Billy,

[snip]
> wenn es nach mir gehen würde, dann hätte ich natürlich lieber MD5
> genommen, jedoch steht mir diese option nicht offen.
was spricht denn gegen andere Verschlüsselungsfunktionen wie AES_ENCRYPT
bzw. PASSWORD()?
http://dev.mysql.com/doc/refman/4.1/en/encryption-functions. html

Viele Grüße und auch alles Gute zum neuen Jahr

Martin

Re: encrypt und windows

am 02.01.2006 12:08:05 von Dominik Echterbruch

Billy Abrecht wrote:
>
> jetzt zu meinem kleinen Problemchen
> ich möchte folgendes statement absenden:
> | SELECT * FROM `reglist`
> | WHERE nick = 'test' and login_pwd = encrypt('123456',login_pwd)
>
> es tut aber nicht so wie ich es gern hötte.
> versuche ich z.B.
> | SELECT encrypt('password','salt')
> bekomm ich immer .
>
> und jetzt meine Frage, kann ich dies irgendwie auf Windows zum laufen
> kriegen?
> meine MySQL version ist: 4.1.11-nt
> mein System ist ein WinXP SP2

Steht dir die Option offen, ein anderes (Unixoides) Betriebssystem zu
nehmen, bzw. die Datenbank auf ein solches System auszulagern? Das wäre
vermutlich der einfachste Weg. WinXP ist IMHO (neben meinen allgemeinen
Bedenken gegenüber Windows) ohnehin nicht die geeignete Plattform für
Server.


Grüße,
Dominik
--
MonstersGame - Die Schlacht zwischen Vampiren und Werwölfen
http://spielwelt6.monstersgame.net/?ac=vid&vid=3018786

Re: encrypt und windows

am 02.01.2006 23:18:48 von Billy Abrecht

Hi Martin,

Martin Schneider schrieb:
> [snip]
>
>> wenn es nach mir gehen würde, dann hätte ich natürlich lieber MD5
>> genommen, jedoch steht mir diese option nicht offen.
>
> was spricht denn gegen andere Verschlüsselungsfunktionen wie AES_ENCRYPT
> bzw. PASSWORD()?
> http://dev.mysql.com/doc/refman/4.1/en/encryption-functions. html

von meiner Seite her nichts, jedoch das bestehende system wo ich drum
herum Arbeiten muss arbeitet leider nur mit dem.

Grüsse Billy

Re: encrypt und windows

am 02.01.2006 23:22:06 von Billy Abrecht

Hallo Dominik,

Dominik Echterbruch schrieb:
> Billy Abrecht wrote:
>
>>
>> jetzt zu meinem kleinen Problemchen
>> ich möchte folgendes statement absenden:
>> | SELECT * FROM `reglist`
>> | WHERE nick = 'test' and login_pwd = encrypt('123456',login_pwd)
>>
>> es tut aber nicht so wie ich es gern hötte.
>> versuche ich z.B.
>> | SELECT encrypt('password','salt')
>> bekomm ich immer .
>>
>> und jetzt meine Frage, kann ich dies irgendwie auf Windows zum laufen
>> kriegen?
>> meine MySQL version ist: 4.1.11-nt
>> mein System ist ein WinXP SP2
>
>
> Steht dir die Option offen, ein anderes (Unixoides) Betriebssystem zu
> nehmen, bzw. die Datenbank auf ein solches System auszulagern? Das wäre
> vermutlich der einfachste Weg. WinXP ist IMHO (neben meinen allgemeinen
> Bedenken gegenüber Windows) ohnehin nicht die geeignete Plattform für
> Server.

Das habe ich jetzt auch so gemacht. Ich habe mir mittels vm Fedora Core
4 aufgesetzt aufgesetzt und mir so eine entwicklungsumgebung geschaffen.
WinXP ist als Server Plattform wirklich nicht geeignet jedoch zum
entwickeln reicht es meistens aus.

Danke

Grüsse Billy