Alaska Software Inc. - Funktion crypt() und ANSI Zeichensatz
Username: Password:
AuthorTopic: Funktion crypt() und ANSI Zeichensatz
Hans Blum Funktion crypt() und ANSI Zeichensatz
on Thu, 17 May 2007 23:31:14 +0200
Hallo

Habe ein Problem mit der Funktion crypt() und ANSI Zeichensatz
Habe meine Prgs nach ANSI konvertiert
dabei ist:
crypt(<cString>,<cPassWord>) --> cResultString und
crypt(<cResultString><cPassWord>)--> cString           (wie beim OEM 
(Zeichensatz)

wenn ich aber cResultString in DBF  schreibe und wieder lese
--der gelesene unterscheidet sich vom geschriebenen String-- (Warum ? 
nur bei ANSI )
  auch: ConvToAnsiCP()  ->falscher String
Folge: der ausgelesenen, entcrypte String ist ungleich cResultString

Habe ein Beispiel gezipt (Anhang)
  tcrypt.exe  N  -> charset OEM   tcryp.exe ->Charset ANSI

Wer kann mir helfen?
oder gibt es eine äquivalente Funktion

Mit freundlichen Gruß


tcrypt.rar
Alfred Janssen Re: Funktion crypt() und ANSI Zeichensatz
on Sun, 20 May 2007 23:55:55 +0200
Hallo Hans,

wie hast Du SET CHARSET TO ansi | OEM eingestellt. Probier mal beide 
Versionen aus.

mfg, alfred




> Hallo
> 
> Habe ein Problem mit der Funktion crypt() und ANSI Zeichensatz
> Habe meine Prgs nach ANSI konvertiert
> dabei ist:
> crypt(<cString>,<cPassWord>) --> cResultString und
> crypt(<cResultString><cPassWord>)--> cString           (wie beim OEM 
> (Zeichensatz)
> 
> wenn ich aber cResultString in DBF  schreibe und wieder lese
> --der gelesene unterscheidet sich vom geschriebenen String-- (Warum ? 
> nur bei ANSI )
>  auch: ConvToAnsiCP()  ->falscher String
> Folge: der ausgelesenen, entcrypte String ist ungleich cResultString
> 
> Habe ein Beispiel gezipt (Anhang)
>  tcrypt.exe  N  -> charset OEM   tcryp.exe ->Charset ANSI
> 
> Wer kann mir helfen?
> oder gibt es eine äquivalente Funktion
> 
> Mit freundlichen Gruß
Hans@optik-blum.deRe: Funktion crypt() und ANSI Zeichensatz
on Wed, 23 May 2007 13:30:22 +0200
Hallo Alfred,
vielen Dank für deine Antwort

Problem nur bei  charset to  ansi und dbfdbe
habe aber alle meine Prg?s in ansi konvertiert.
Bei SET CHARSET TO OEM  und DBFDBE gibt es dieses Problem nicht,
da die dbfdbe mit dem OEM Zeichensatz speichert.
Suche nur nach einem Schalter oder ähnliches mit dem ich die Crypt-Func.
DBFDBE und Ansi benutzen kann.

richtige Ergebnisse gibt es nur bei den Kombinationen
OEM ->DBFDBE  Speicher Daten immer in OEM
ANSI->FOXDBE  Speichert nach Einstellung Daten in Ansi

Viele Grüße,
Hans


Alfred Janssen schrieb:
> Hallo Hans,
> 
> wie hast Du SET CHARSET TO ansi | OEM eingestellt. Probier mal beide 
> Versionen aus.
> 
> mfg, alfred
> 
> 
> 
> 
>> Hallo
>>
>> Habe ein Problem mit der Funktion crypt() und ANSI Zeichensatz
>> Habe meine Prgs nach ANSI konvertiert
>> dabei ist:
>> crypt(<cString>,<cPassWord>) --> cResultString und
>> crypt(<cResultString><cPassWord>)--> cString           (wie beim OEM 
>> (Zeichensatz)
>>
>> wenn ich aber cResultString in DBF  schreibe und wieder lese
>> --der gelesene unterscheidet sich vom geschriebenen String-- (Warum ? 
>> nur bei ANSI )
>>  auch: ConvToAnsiCP()  ->falscher String
>> Folge: der ausgelesenen, entcrypte String ist ungleich cResultString
>>
>> Habe ein Beispiel gezipt (Anhang)
>>  tcrypt.exe  N  -> charset OEM   tcryp.exe ->Charset ANSI
>>
>> Wer kann mir helfen?
>> oder gibt es eine äquivalente Funktion
>>
>> Mit freundlichen Gruß
Thomas Braun
Re: Funktion crypt() und ANSI Zeichensatz
on Wed, 23 May 2007 15:50:36 +0200
Hans@optik-blum.de wrote:

> Suche nur nach einem Schalter oder ähnliches mit dem ich die Crypt-Func.
> DBFDBE und Ansi benutzen kann.

Aus der Doku der DBFDBE:

> Alle Zeichenketten werden unter Verwendung des OEM Zeichensatzes in
> Zeichenfeldern oder Memo-Feldern gespeichert. Wird durch SET CHARSET der
> ANSI Zeichensatz für ein Programm eingestellt, erfolgt beim Lesen oder
> Schreiben von Feldern eine automatische Konvertierung nach ANSI. 

Daraus ergibt sich, das du die DBFDBE für diesen Zweck vergessen kannst,
denn die ANSI<-->OEM-Konvertierung ist nicht 100% umkehrbar (sprich,
mehrere ANSI-Zeichen werden auf dasselbe OEM-Zeichen gewandelt und
umgekehrt)

Einzige Idee wäre, den verschlüsselten String nochmal so zu codieren, das
alle Zeichen unterhalb von ASCII 128 liegen (dort ist die ANSI-OEM
Umwandlung umkehrbar), z.B. mit BASE64:

http://de.wikipedia.org/wiki/Base64 (dort gibt es auch Links auf
alternative Kodierverfahren, wie z.B. quoted-printable oder UUEncode)

Für quoted-printable habe ich Xbase++ source, bei Interesse einfach nochmal
melden.

Grüße
Thomas
Hans Blum Re: Funktion crypt() und ANSI Zeichensatz
on Thu, 24 May 2007 15:48:27 +0200
Vielen Dank für die Info

werde  dbfs nach Fox konvertiern

Viele Grüße,
Hans



Thomas Braun schrieb:
> Hans@optik-blum.de wrote:
> 
>> Suche nur nach einem Schalter oder ähnliches mit dem ich die Crypt-Func.
>> DBFDBE und Ansi benutzen kann.
> 
> Aus der Doku der DBFDBE:
> 
>> Alle Zeichenketten werden unter Verwendung des OEM Zeichensatzes in
>> Zeichenfeldern oder Memo-Feldern gespeichert. Wird durch SET CHARSET der
>> ANSI Zeichensatz für ein Programm eingestellt, erfolgt beim Lesen oder
>> Schreiben von Feldern eine automatische Konvertierung nach ANSI. 
> 
> Daraus ergibt sich, das du die DBFDBE für diesen Zweck vergessen kannst,
> denn die ANSI<-->OEM-Konvertierung ist nicht 100% umkehrbar (sprich,
> mehrere ANSI-Zeichen werden auf dasselbe OEM-Zeichen gewandelt und
> umgekehrt)
> 
> Einzige Idee wäre, den verschlüsselten String nochmal so zu codieren, das
> alle Zeichen unterhalb von ASCII 128 liegen (dort ist die ANSI-OEM
> Umwandlung umkehrbar), z.B. mit BASE64:
> 
> http://de.wikipedia.org/wiki/Base64 (dort gibt es auch Links auf
> alternative Kodierverfahren, wie z.B. quoted-printable oder UUEncode)
> 
> Für quoted-printable habe ich Xbase++ source, bei Interesse einfach nochmal
> melden.
> 
> Grüße
> Thomas