Gegevens kunnen niet worden ontcijferd

Ik moet gegevens ontsleutelen die zijn opgeslagen in een MySQL-database.

Het werkte in mijn tests, maar nu het live is en gebruikers gegevens verzenden, worden de uitvoergegevens niet gedecodeerd in iets leesbaars.

function encrypt($text,$key){
  $key = md5("Salt1". $key . "Salt2");
  return trim(
    base64_encode(
      mcrypt_encrypt(
        MCRYPT_RIJNDAEL_256, 
        $key, 
        $text, 
        MCRYPT_MODE_ECB, 
        mcrypt_create_iv(
          mcrypt_get_iv_size(
            MCRYPT_RIJNDAEL_256, 
            MCRYPT_MODE_ECB
          ), 
          MCRYPT_RAND
        )
      )
    )
  ); 
}

De gegevens zijn dus bij verzending versleuteld en de belangrijkste gegevens zijn afkomstig van een aantal kolommen in dezelfde rij.

Maar met behulp van:

function decrypt($text,$key){
  $key = md5("Salt1". $key . "Salt2");
  return trim(
    mcrypt_decrypt(
      MCRYPT_RIJNDAEL_256, 
      $key, 
      base64_decode($text), 
      MCRYPT_MODE_ECB, 
      mcrypt_create_iv(
        mcrypt_get_iv_size(
          MCRYPT_RIJNDAEL_256, 
          MCRYPT_MODE_ECB
        ),
        MCRYPT_RAND
      )
    )
  ); 
} 

Ik krijg gewoon meer gecodeerde rommel.

Ik heb een andere zielemissie nodig dan gebruikers te vertellen terug te gaan en hun informatie bij te werken.

1
Waar moeten $ salt1 en $ salt2 plotseling vandaan komen, om te beginnen?
toegevoegd de auteur deceze, de bron
Ik heb je vraag bewerkt om het minder verwarrend te maken.
toegevoegd de auteur Incognito, de bron
Algemene cryptografische fouten: 1) geen specificatie van het opvulmechanisme 2) waarbij voor elke waarde geen ander zout wordt geboden 3) die geen integriteitsbescherming biedt 4) met behulp van de ECB-modus voor tekst 5) specificeert een IV voor ECB-modus. Laten we echter niet al te kritisch zijn: goede dingen: 1) een bekend goed cipher gebruiken en 2) base64 gebruiken om van binair naar tekens te converteren (en natuurlijk terug) 3) voldoende sleutelformaat.
toegevoegd de auteur Maarten Bodewes, de bron
wat? $ salt1 en $ salt2 moeten worden gedefinieerd als global om te kunnen werken
toegevoegd de auteur JamesHalsall, de bron
waarom heb je dit niet getest voordat je ging leven? ;)
toegevoegd de auteur Jakub, de bron
Dat zijn statische tekstblokken van een andere bron. Ik kon een deel van mijn gegevens decoderen, maar ik kan geen andere gegevens ophalen op de plaats waar ik datum ("r") gebruikte als onderdeel van de sleutel.
toegevoegd de auteur BrentC, de bron
Rechts. ze maken deel uit van de functie die ik heb verwijderd om mijn gegevens te beschermen.
toegevoegd de auteur BrentC, de bron
Ik heb mijn vraag bewerkt om het misschien minder verwarrend te maken.
toegevoegd de auteur BrentC, de bron

1 antwoord

[$ salt1 en $ salt2 ] Dit zijn statische tekstblokken van een andere bron. Ik was in staat om te krijgen   sommige van mijn gegevens moeten worden gedecodeerd, maar ik kan geen andere gegevens ophalen waar ik die heb gebruikt   datum ("r") als onderdeel van de sleutel.

Sorry als ik de voor de hand liggende opmerking vermeld, maar datum ("r") drukt elke seconde een andere waarde af:

Wed, 07 Dec 2011 17:35:44 +0100

Als u dit hebt gebruikt als onderdeel van uw coderingssleutel, moet u het exacte tijdstip waarop u de sleutel hebt gegenereerd, inclusief de precieze tweede en tijdzone, herstellen. De vraag is: heb je het opgeslagen?

0
toegevoegd