mein tipp wäre das die memo box etwas mit deinem text anstellt (Umcodiert/Umformatiert)
wenn du etwas verschlüsselt hast, besteht die verschlüsselung aus lesbaren zeichen?
falls dort nicht lesbare zeichen vorkommen kann es sein das die memo box sie verschluckt (inkompatibel)
evtl vorher noch mit base64 en-/dekodieren, da kommen nur zahlen raus die jede memobox drucken kann/du problemlos weiternutzen kannst.
also:
Code:
var
Txt: String;
begin
if SDialog.Execute then
begin
txt:=Verschluesseln1(Memo1.Lines.Text,true,true); // hier ist dein text jetzt in txt verschlüsselt
txt:=Base64Enc(Txt); // hier wird daraus ein lesbarer string
Memo1.Lines.Clear; // memo leeren
Memo1.Lines.Text := Txt; // memo füllen
Memo1.SaveToFile(); // <<-- da es lesbare zeichen sind, kannst du diesen befehl nutzen
end;
end;
andersrum:
Memo1.LoadFromFile(); // <<-- da es lesbare zeichen sind, kannst du diesen befehl nutzen (dein delphi kann anderen befehl haben)
txt:=Memo1.Lines.Text; // <<-- hier memo in txt speichern
txt:=Base64Dec(Txt); // hier wird daraus dein verschlüsselter string
txt:=Entschluesseln1(txt,true,true); // <-- aufruf überprüfen, hab nur dein verschluesseln1 umbenannt
Memo1.Lines.Clear; Memo1.Lines.Text := txt; // hier müsste nun dein verschlüsselter string wieder lesbar sein
hier siehst du einen meiner erster startversuche um lizenzinformationen zu verschlüsseln.
wie du vielleicht erkennst, nutz ich alles nur intern und gut verschachtelt.
mir war damals lediglich bewusst das ich nicht alle zeichen ($00 - $FF) als text schreiben und lesen kann, deswegen der umweg per Base64.
tja, so fing ich mal an....
Delphi-Quellcode:
procedure TRegUnit.btnApplyClick(Sender: TObject);
var
Ini: TIniFile;
begin
{
MessageBox(GetDesktopWindow,'Registration Data is correct. Please Restart.','Success! Please Restart.',MB_ICONINFORMATION);
MessageBox(GetDesktopWindow,'Wrong Key!','Error!',MB_ICONHAND);
}
// only continue if some data is present
if Length(edUser.Text+edCompany.Text) > 0 then
// check for valid DES
TRY
if ( (DESEncrypt(edUser.Text+edCompany.Text,GiveIt(PassKey)) = edKey.Text) and (edValid.Text = GiveIt(edKey.Text)) ) then
begin
Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
// Save Userdata Base64 scrambled and DES protected
Ini.WriteString('Registration','Name',DESEncrypt(Base64Enc(edUser.Text),GiveIt(PassKey)));
Ini.WriteString('Registration','Company',DESEncrypt(Base64Enc(edCompany.Text),GiveIt(PassKey)));
Ini.WriteString('Registration','Serial',DESEncrypt(Base64Enc(edKey.Text),GiveIt(PassKey)));
Ini.WriteString('Registration','Key',DESEncrypt(Base64Enc(edValid.Text),GiveIt(PassKey)));
Ini.WriteString('Registration','CRC',DESEncrypt(Base64Enc(MD5Print(MD5StringA(edUser.Text+edCompany.Text+edKey.Text+edValid.Text))),GiveIt(PassKey)));
Ini.Free;
end;
EXCEPT // bei irgendeiner unstimmigkeit oben einfach weitermachen, so macht man es cracker etwas schwerer da null rückmeldung kommt
END;
{
edKey.Text := DESEncrypt(edUser.Text+edCompany.Text,GiveIt(PassKey));
edValid.Text := GiveIt(edKey.Text);
}
// clean up, no later usage wanted
edUser.Text := '';
edCompany.Text := '';
edKey.Text := '';
edValid.Text := '';
RegUnit.Close;
// RegUnit.CloseModal;
end;