2 richtings codering

Overzicht

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

07/07/2022 20:48:25
Anchor link
Hoi

Ik ben op zoek naar een 2 richtingscodering.
Zoiets zoals base64 waar SmFu = Jan maar liefst iets met een sleutel. zodat ik (of mijn site) het origineel kan terug halen. Bestaat er zoiets of moet ik dit zelf maken?

mcrypt_generic is verouderd.

Jan
 
PHP hulp

PHP hulp

09/11/2024 04:07:46
 
Rob Doemaarwat

Rob Doemaarwat

07/07/2022 21:33:48
Anchor link
openssl_encrypt en openssl_decrypt. Als je een beetje algo kiest zit het voor de rest wel snor.
 
Jan R

Jan R

08/07/2022 07:08:31
Anchor link
Ik ga er eens goed naar kijken.
Bedankt
 

12/07/2022 11:11:47
Anchor link
Ik vond het begin van openssl weinig toegankelijk, omdat OpenSSL een suite is van verschillende functies. Je moet dan eerst bedenken of je wilt versleutelen op basis van een gedeeld wachtwoord, of op basis van een cryptografische sleutel.

Als je wilt bijvoorbeeld wilt sleutelen met AES en een wachtwoord als sleutel (let op: status uit te faseren volgens ncsc.nl) moet je weten dat je eerst een sleutelpaar moet genereren met OpenSSL, dat het bericht versleutelt moet worden met de publieke sleutel waarna het alleen te ontsleutelen is met de private sleutel. Voorbeeldfunctie in PHP voor AES-256-CFB met padding (versleuteld bericht bestaat uit blokjes van 16 bytes):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function ontsleutel(string $sleutel, string $binair) : string {
  $bericht = hex2bin($binair);
  $hash = hash('sha256', $sleutel , TRUE);
  $hmac = substr($bericht, 0, 32);  // aannemende dat je dat hier hebt opgeslagen
  $iv = substr($bericht, 32, 16);  // idem
  $versleuteld = substr($sBericht, 48);
  if ('' === $versleuteld) {return '';} // leeg bericht
  if (!hash_equals(hash_hmac('sha256', $versleuteld . $iv, $hash, TRUE), $hmac)) {
    die('Verkeerde sleutel of bericht is corrupt');
  }

  $tekst = openssl_decrypt($versleuteld, 'aes-256-cfb', $hash, OPENSSL_RAW_DATA, $iv);
  if (FALSE === $tekst) {
    die('Bericht kan niet worden ontsleuteld');
  }

  $padding = ord(substr($tekst, -1));
  if ($padding > 0 && $padding <= 15) {
    return substr($tekst, 0, strlen($tekst) - $padding);
  }

  return $tekst;
}
[
/code]
Gewijzigd op 12/07/2022 11:13:28 door
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.