AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Feld durch verschlüsselten Text ersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Feld durch verschlüsselten Text ersetzen

Ein Thema von waldforest · begonnen am 9. Feb 2011 · letzter Beitrag vom 9. Feb 2011
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 21:19
Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos
Hallo,
ich würde gerne ein Feld mit sich selbst nach Entschlüsselung in einer Firebirdtabelle ersetzen.
Hierzu dient die eigene Funktion Crypt, welche sich als Parameter zwei Textfelder bedient.

Ich habe dies derzeit wie folgt gelöst, dauert aber bei einer großen Datenbank endlos

Code:
  with Tabelle do
  begin
    for i := 1 To RecordCount do
    begin
      Edit ;
      FieldByName('name').Value := Crypt(name, "WEDRFXEFCRTT"));
     Next;
    end;
  end;
wie könnte ich dies über den SQL Update lösen ?

Update Tabelle set name = Replace( name, name Crypt(name, "WEDRFXEFCRTT"))

leider gelingt es mir nicht dei Funktion einzubinden. Hat hier jemand Erfahrung ?
mfg wf
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 22:19
Guten Abend,

so ganz habe ich es nicht verstanden was Du bezwecken willst.
Liegt vielleicht auch an den Bezeichnungen die Du verwendest.

sqlText := 'Update Tabelle set name ='+Crypt(name, "WEDRFXEFCRTT") + 'where name = name;';
dann die sqlQuery ausführen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 22:21
Der Flaschenhals könnte auch die uns verheimlichte Funktion Crypt sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 22:30
Hallo,
leider funktioniert dies nicht.

Im Prinzip möchte ich ein Feld, welches verschlüsselt ist entschlüsseln. Hinter Crypt verbirgd sich eine Stringverschlüsselung welche als Parameter Strings benötigt und einen String zurück gibt..

Bei vorgeschlagener Vorgenhensweise erhalte ich die Exception, dass das Feld name nicht gefunden wurde.

Auch das Ersetzen durch
sqlText := 'Update Tabelle set name ='+ Crypt(Tabelle.FieildbyName('name').value, "WEDRFXEFCRTT"))+ 'where name = name;';


hilt nicht
mfg wf
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 22:31
Das mag schon möglich sein, aber ein Flaschenhals ist definitiv das Update mit dem gezeigten Verfahren.

Dafür sollte man ein prepared Statement mit einem Parameter nehmen.
Das geht erheblich schneller.

Eine Query erstellen mit folgendem SQL-Text
Code:
UPDATE MeineTabelle SET name = :CryptName WHERE MeineTabelle.ID = :ID
Die DataSource der Abfrage-Query als MasterSource der Update-Query festlegen.
Delphi-Quellcode:
UpdateQuery.Prepare;
try
while not AbfrageQuery.EOF do
  begin
    UpdateQuery.ParamByName( 'CryptName' ) := Crypt( AbfrageQuery.FieldByName( 'name' ).AsString );
    UpdateQuery.ExecSQL;
    AbfrageQuery.Next;
  end;
finally
  UpdateQuery.Unprepare;
end;
Ob der Aufruf genau so funktioniert hängt von den verwendeten Komponenten und DB ab.

Hallo,
leider funktioniert dies nicht.

Im Prinzip möchte ich ein Feld, welches verschlüsselt ist entschlüsseln.

Bei vorgeschlagener Vorgenhensweise erhalte ich die Exception, dass das Feld name nicht gefunden wurde.

Auch das Ersetzen durch
sqlText := 'Update Tabelle set name ='+ Crypt(Tabelle.FieildbyName('name').value, "WEDRFXEFCRTT"))+ 'where name = name;';
hilt nicht
Äh, bitte Transferleistung aktivieren ... DU kennst die korrekte Bezeichnung deiner Felder, WIR nicht!

Allerdings:
Code:
UPDATE
...
WHERE
  name = name
ist irgendwie sinnentleert, kann man dann auch gleich weglassen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 9. Feb 2011 um 22:34 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 22:33
so..

Deine Tabelle heißt Tabelle
Dein Feld heißt name
Deine StringVariable die du verschlüsselst heißt auch name

Da sehe mal einer durch.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 22:47
Vielen Dank,
Prepare kenne ich noch nicht, werde mich einmal damit befassen.

Leider funktioniert das mit Prepare nicht.
Scheint wohl mit Zeos und Firebird nicht zu funktionieren.
mfg wf
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 23:03
Da google auch dein Freund sein sollte findet der "bemühte" User den Hinweis, dass die Zeos-Komponenten das Prepared wohl automatisch eingebaut haben (ich setze die Zeos-Kompos nicht ein, sind mir zu langsam).

Also dann einfach die Werte durch den Parameter-Wolf drehen lassen.

Es würde ja auch helfen, die Zeiten zu messen, die du für das Verschlüsseln und für das Updaten der DB brauchst. Evtl. musst du an beiden Stellen schrauben.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz