Poslední příspěvky

Stran: [1] 2 3 ... 10
1
Obecné / Re:Šifrování souborů
« Poslední příspěvek od Jiří Bílý kdy Dnes v 16:56:03 »
Zkontroluj si, že máš při šifrování i dešifrování stejnou hodnotu inicializačního vektoru (IV) a jestli při dešifrování používáš mód CBC.
Něco o tom viz. např. https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
2
Obecné / Šifrování souborů
« Poslední příspěvek od rmaster kdy Dnes v 15:59:29 »
Zdravím, potřebuji zdánlivě jednoduchou věc, nad kterou už bádám druhý den a jsem v koncích.
Chci na serveru v PHP zašifrovat textový soubor, který předem vygeneruji, pak ho přenést na Windows (to nyní neřeším) a ten soubor následně načíst mojí aplikací a rozšifrovat. Používám Delphi XE3.
Mělo by se jednat o offline registraci mého programu, když uživatel nemá přístup k internetu.
Vše mi funguje, ale obsah zdrojového soubor před zašifrováním a obsah cílového souboru po dešifrování je úplně jiný.
Nedokázal by někdo poradit? Moc Děkuji.
Kód: [Vybrat]
<?php
$inputFile 
'soubor.txt';
$outputFile 'soubor_encrypted.txt';

$key 'tajny_klic_12345';  
$iv openssl_random_pseudo_bytes(16); // Inicializační vektor

$data file_get_contents($inputFile);

$ciphertext openssl_encrypt($data'aes-256-cbc'$keyOPENSSL_RAW_DATA$iv);

$ivAndCiphertext $iv $ciphertext;

$base64EncodedData base64_encode($ivAndCiphertext);

file_put_contents($outputFile$base64EncodedData);

echo 
"Soubor byl úspěšně zašifrován a uložen ve formátu Base64.";
?>
Kód: [Vybrat]
uses
  System.SysUtils, System.Classes, DCPrijndael, DCPcrypt2;

const
  Base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

function DecodeBase64(const Input: string): TBytes;
var
  i, j, Triplet: Integer;
  OutputIndex: Integer;
  PadCount: Integer;
begin
  PadCount := 0;
  for i := Length(Input) downto 1 do
  begin
    if Input[i] = '=' then
      Inc(PadCount)
    else
      Break;
  end;

  SetLength(Result, (Length(Input) * 3) div 4 - PadCount);
  OutputIndex := 0;

  for i := 1 to Length(Input) div 4 do
  begin
    Triplet := (Pos(Input[(i - 1) * 4 + 1], Base64Chars) - 1) shl 18 or
               (Pos(Input[(i - 1) * 4 + 2], Base64Chars) - 1) shl 12 or
               (Pos(Input[(i - 1) * 4 + 3], Base64Chars) - 1) shl 6 or
               (Pos(Input[(i - 1) * 4 + 4], Base64Chars) - 1);

    Result[OutputIndex] := (Triplet shr 16) and $FF;
    Result[OutputIndex + 1] := (Triplet shr 8) and $FF;
    Result[OutputIndex + 2] := Triplet and $FF;

    OutputIndex := OutputIndex + 3;
  end;

  if PadCount = 1 then
    SetLength(Result, Length(Result) - 1);
  if PadCount = 2 then
    SetLength(Result, Length(Result) - 2);
end;
procedure DecryptFile(const EncryptedFile, DecryptedFile, Key: string);
var
  InputStream, OutputStream: TFileStream;
  Base64EncodedData: string;
  IVAndCiphertext, IV, EncryptedData: TBytes;
  Rijndael: TDCP_rijndael;
begin
  InputStream := TFileStream.Create(EncryptedFile, fmOpenRead);
  try
    SetLength(Base64EncodedData, InputStream.Size);
    InputStream.ReadBuffer(Base64EncodedData[1], InputStream.Size);

    IVAndCiphertext := DecodeBase64(Base64EncodedData);

    SetLength(IV, 16);
    Move(IVAndCiphertext[0], IV[0], 16);

    SetLength(EncryptedData, Length(IVAndCiphertext) - 16);
    Move(IVAndCiphertext[16], EncryptedData[0], Length(EncryptedData));

    Rijndael := TDCP_rijndael.Create(nil);
    try
      Rijndael.Init(Key[1], 256, IV);  // AES-256, klíč o délce 256 bitů

      Rijndael.Decrypt(EncryptedData[0], EncryptedData[0], Length(EncryptedData));

      OutputStream := TFileStream.Create(DecryptedFile, fmCreate);
      try
        OutputStream.WriteBuffer(EncryptedData[0], Length(EncryptedData));
      finally
        OutputStream.Free;
      end;
    finally
      Rijndael.Free;
    end;
  finally
    InputStream.Free;
  end;
end;
..........................
// Použití
begin
  // Zavoláme funkci pro dešifrování
  DecryptFile('soubor_encrypted.txt', 'soubor_decrypted.txt', 'tajny_klic_12345');

  // Výsledek je uložen do souboru 'soubor_decrypted.txt'
  ShowMessage('Soubor byl úspěšně dešifrován a uložen.');
end.

3
Obecné / Re:Internal error F2084 - DBG2304
« Poslední příspěvek od Stanislav Hruška kdy 13-02-2025, 09:10:34 »
Nestraší Ti. Niektoré veci a pokazia a potom sa samoopravia. A nikdy nezistíš prečo.
4
Obecné / Re:Internal error F2084 - DBG2304
« Poslední příspěvek od PetrB0 kdy 12-02-2025, 17:31:07 »
Tak mi tady asi straší. Nic jsem neudělal, dal znovu překlad a proběhlo to bez problémů. A to jsem před tím několikrát restartoval delphi, celé PC, promazal adresář, dal kompilaci a chyba. Teď jsem jenom procházel events, které mi předchozí kompilace vrátila (včetně té chyby) a pak jsem dal build a bylo to O.K.
5
Obecné / Internal error F2084 - DBG2304
« Poslední příspěvek od PetrB0 kdy 12-02-2025, 17:19:21 »
Ahoj,
mám projekt v Delphi 12.1 který mi ještě před pár dny šel přeložit. Teď jsem udělal pár úprav, dal překlad a vrátilo se mi hlášení, že Internal Error F2084. DBG2304.
Hledal jsem na netu co to je a na webu edn jsem našel informaci o tom, že může být problém s pamětí při překladu (https://docwiki.embarcadero.com/RADStudio/Athens/en/F2084_Internal_Error_-_%25s%25d_(Delphi)) . Nevím, projekt je malý (jeden form a pár unit) a z 64GB RAM mám obsazenou cca 1/3. Doporučovali zapnout možnost ladění přes MSBuild. Tak jsem to zkusil a nepomohlo to. Nepomohlo ani, když jsem změny vrátil zpět.
Jiný projekt mi přeložit šel.
Nevíte co s tím?
Díky
6
Obecné / Re:Delphi 12.2 a HDPI monitor
« Poslední příspěvek od vandrovnik kdy 12-02-2025, 11:10:56 »
Tak jsem možná našel postup, jak aplikaci, která byla odjakživa tvořená v 96 dpi, převést na 150 %, aniž by se pokazily formuláře, které dědí z jiných formulářů. Na malinkém testovacím projektu mi funguje následující postup:

1. IDE (spouštím to "normální", DPI aware) nastavit na "Low DPI (96 PPI)".

2. Otevřít projekt a v něm otevřít všechny formuláře, které dědí z jiného formuláře. Ujistit se, že zobrazený je vždy kód, ne formulář. (V téhle fázi IDE funguje taky nějak divně, třeba čtverečky u checkboxů ignorují fakt, že mají být mrňavé, stejně tak pár dalších komponent, ale zdá se, že to nakonec ničemu nevadí.)

3. IDE přepnout na "Automatic (Screen PPI)".

4. V editoru postupně procházet formuláře, musí se začít od (nejvzdálenějších) potomků. Přepnout z Code na Design - vše se přepočítá na 150 %. Formulář uložit (a zavřít). Formuláře-předci se tudíž dělají až nakonec.

Tak jen doufám, že co se osvědčilo při testování, bude fungovat i na celý projekt.

7
Obecné / Re:Delphi 12.2 a HDPI monitor
« Poslední příspěvek od vandrovnik kdy 11-02-2025, 21:13:34 »
Já teda hdpi monitor nemám, ale tohle máš nastavený jak?
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/High_DPI

tady tvrdí, že to funguje dobře  ;):
https://blogs.embarcadero.com/new-in-rad-studio-11-high-dpi-ide-and-form-designing/

Taky jsem si nejdřív myslel, že to funguje dobře - možná to funguje pro nějaké základní použití, ale u mne moc ne.
Když nechám 96 dpi, jsou to blechy, takže nepoužitelné. Takže musím dát Automatic (screen DPI).
Co to provede s formulářem, který dědí z jiného formuláře, přikládám v příloze.
8
Obecné / Re:Delphi 12.2 a HDPI monitor
« Poslední příspěvek od chaloup kdy 11-02-2025, 19:38:00 »
Já teda hdpi monitor nemám, ale tohle máš nastavený jak?
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/High_DPI

tady tvrdí, že to funguje dobře  ;):
https://blogs.embarcadero.com/new-in-rad-studio-11-high-dpi-ide-and-form-designing/
9
Obecné / Delphi 12.2 a HDPI monitor
« Poslední příspěvek od vandrovnik kdy 11-02-2025, 18:47:47 »
Hezký večer, tak jsem si pořídil nový monitor... HDPI, zvětšení nastaveno na 150 %. Všechny aplikace se chovají způsobně, kromě 11 let starého poštovního klienta a - kromě nejnovějších Delphi... :-( Provozujete někdo Delphi 12.2 na HDPI monitoru jinak než v rozmazaném "DPI Unaware" režimu?
10
Obecné / Re:Požadavek na získání tokenu na EGD distribuci
« Poslední příspěvek od Jirka kdy 03-02-2025, 10:35:56 »
Tak po aktualizaci Synapse, Opensll  a přidání  HTTP.MimeType := 'application/json';
 se to rozběhlo

Díky za pomoc
Stran: [1] 2 3 ... 10