AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Verschlüsseln in PHP und entschlüsseln in Delphi?
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsseln in PHP und entschlüsseln in Delphi?

Ein Thema von gpl · begonnen am 6. Mär 2024 · letzter Beitrag vom 8. Mär 2024
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#1

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 6. Mär 2024, 15:08
Das encoding sollte hier doch keine Rolle spielen, denn normalerweise wird auf Byte-Ebene verschluesselt.
Leider gibt es noch viel zu viele alte Lösungen, die auf PAnsiChar aufsetzen und von Encoding noch nichts gewusst haben.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 6. Mär 2024, 15:17
PHP wird heute oft als UTF-8 laufen. In Delphi sind Strings aber nun standardmäßig Unicode.

Wenn man also einen "String" ver-/entschlüsselt (z.B. ein Passwort), dann muß schon beachtet werden, welche Encoding auf jeder Seite benutzt wird.


Je, byte-weise wird meistens ver-/entschlüsselt,
aber wenn du jetzt UTF-8 vertschlüsslst, und das entschlüsselte als Unicode (2 Byte) betrachtest, dann sieht das Ergebnis ein bissl chinesisch aus.


Ansonsten braucht es natürlich auf beiden Seiten auch die gleichen Algorithmen und eventuell noch auf gleiche Settings achten.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Mär 2024 um 15:20 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 7. Mär 2024, 21:54
PHP wird heute oft als UTF-8 laufen. In Delphi sind Strings aber nun standardmäßig Unicode.
Vorsicht! Auch UTF8 ist Unicode! Nur eben anders codiert.
Aber das wusstest du ja bestimmt schon.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
623 Beiträge
 
Delphi XE6 Enterprise
 
#4

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 8. Mär 2024, 09:24
PHP wird heute oft als UTF-8 laufen. In Delphi sind Strings aber nun standardmäßig Unicode.
Vorsicht! Auch UTF8 ist Unicode! Nur eben anders codiert.
Aber das wusstest du ja bestimmt schon.
Genau. Ist es nicht sogar UTF-16?
  Mit Zitat antworten Zitat
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
150 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 8. Mär 2024, 09:34
Warum sollte man bei einer direkten Verbindung zwischen Webserver und Delphi denn überhaupt selbst verschlüsseln und sich nicht auf die Transportverschlüsselung (https) verlassen?
Ich sehe wenig Sinn darin, hier etwas eigenes zu implementieren. Wie sieht denn die zugrundeliegende Anforderung aus?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#6

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 8. Mär 2024, 09:36
Jupp,

und dass UTF-16 auch nichts mit UTF-8 gemeinsam hat, außer einen Teil des Namens.

Prinzipiell ist UTF-8 "nur" eine ANSI-Codepage.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#7

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 8. Mär 2024, 09:46
Nee, UTF8 ist nicht eine ANSI Codepage.
Denn je nach Bitmuster können das 1-4 Byte oder so sein, damit auch alle asiatischen zeichen usw. dargestellt werden können.
Auf alle Fälle nicht als 8-Bit ANSI Codepage zu behandeln!

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#8

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 8. Mär 2024, 09:59
Nee, UTF8 ist nicht eine ANSI Codepage.
Für Windows schon, wobei sie sogar CodePages für Unicode (UTF-16 und UTF-16-LE) haben.

https://learn.microsoft.com/de-de/wi...hartomultibyte
CP_ACP = 0 : unser aktuelles ANSI
CP_OEMCP : DOS
CP_UTF8
CP_UTF16 = 1200
CP_UTF16LE = 1201
$FFFF : ohne CodePage / ohne Konvertierung

Delphi-Quellcode:
type
  RawByteString = type AnsiString($ffff);
  UTF8String = type AnsiString(65001); // AnsiString(CP_UTF8);
oder
   AnsiUnicodeString = type AnsiString(1200); // CP_UTF16
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Mär 2024 um 10:14 Uhr)
  Mit Zitat antworten Zitat
gpl

Registriert seit: 28. Jan 2010
Ort: Nähe Bonn
15 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 6. Mär 2024, 15:19
Ich habe jetzt gefühlt 100 verschiedene Ansätze ausprobiert und viele davon waren schon älter und konnten wohl daher nicht mit UTF-8 umgehen.

Auf der PHP-Seite habe ich zum Testen ein kleines Script aus den gefundenen Ansätzen erstellt, dass einen Text verschlüsselt und sofort wieder entschlüsselt.
Wie man sieht, funktioniert das innerhalb PHP problemlos.

Code:
<?php

function MyEncrypt ($data, $key, $iv)
  {
    //Remove the base64 encoding from our key
    $encryption_key = $key;
    //Encrypt the data using AES 256 encryption in CBC mode using our encryption key and initialization vector.
    $encrypted = openssl_encrypt($data, 'AES-256-CBC', $encryption_key, 0, $iv);
    //The $iv is just as important as the key for decrypting, so save it with our encrypted data using a unique separator (::)
    return base64_encode($encrypted);
  }
 
function MyDecrypt ($data, $key, $iv)
  {
   $encryption_key = $key;
   $indata = base64_decode($data); // Base64-Dekodieren
   $unencrypted = openssl_decrypt($indata, 'AES-256-CBC', $encryption_key, 0, $iv);
   return $unencrypted;
  } 

$key = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF";
$plaintext = 'zu verschlüsselnde Nachricht äöüÄÖÜß';
$iv = "1234567890123456";
echo 'Plaintext    : '.$plaintext.'<BR>';
echo 'Key          : '.$key.' ('.strlen($key).')<BR>';
echo 'IV           : '.$iv.' ('.strlen($iv).')<BR>';
$enc = MyEncrypt($plaintext, $key, $iv);
echo 'Verschlüsselt : '.$enc.'<BR>';
echo '<br>';
echo 'Entschlüsselt : '.MyDecrypt($enc, $key, $iv);
 
?>
Ergebnis:
Code:
Plaintext : zu verschlüsselnde Nachricht äöüÄÖÜß
Key : ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF (32)
IV : 1234567890123456 (16)
Verschlüsselt : akMrallnS09ZVmlvOER5Y2w3WCtsVDJ3UEpYbTY4Yy9QQWg2N0xjaFYrdHNpL29pUEdOVVdvUHZNT2ZiQVMwWQ==

Entschlüsselt : zu verschlüsselnde Nachricht äöüÄÖÜß
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#10

AW: Verschlüsseln in PHP und entschlüsseln in Delphi?

  Alt 6. Mär 2024, 15:23
für AES mit CBC
siehe GetIt:

LockBox
Delphi Encryption Compendium
usw.

oder im Indy sollte sich auch was für OpenSSL finden, wenn man dessen AES-Code nutzen mächte
sowie andere OpenSSL-Libs für Delphi
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Mär 2024 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz