Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql और php . में एईएस एन्क्रिप्शन

आपके द्वारा उपयोग किए जा रहे कोड में तीन समस्याएं हैं:

  1. जैसा कि अन्य ने उल्लेख किया है, आपका PHP कोड वर्तमान में MCRYPT_RIJNDAEL_256 . का उपयोग कर रहा है जबकि, जैसा कि AES_ENCRYPT() :

  2. जैसा कि अन्य ने उल्लेख किया है, आप base64_encode() applying लागू कर रहे हैं PHP के बाइनरी परिणाम को टेक्स्ट में बदलने के लिए, जबकि MySQL परिणाम केवल इसके बाइनरी परिणाम का हेक्साडेसिमल प्रतिनिधित्व प्रतीत होता है। आप या तो TO_BASE64() MySQL में v5.6.1 से या फिर bin2hex() पीएचपी में।

  3. जैसा कि mcrypt_encrypt() के तहत प्रलेखित है :

    जबकि MySQL PKCS7 पैडिंग का उपयोग करता है ।

इसलिए, PHP में वही परिणाम प्राप्त करने के लिए जो आप वर्तमान में MySQL के लिए दिखाते हैं:

<?php

class MySQL_Function {
  const PKCS7 = 1;

  private static function pad($string, $mode, $blocksize = 16) {
    $len = $blocksize - (strlen($string) % $blocksize);
    switch ($mode) {
      case self::PKCS7:
        $padding = str_repeat(chr($len), $len); break;

      default:
        throw new Exception();
    }
    return $string.$padding;
  }

  public static function AES_ENCRYPT($str, $key_str) {
    return mcrypt_encrypt(
      MCRYPT_RIJNDAEL_128,
      $key_str, self::pad($str, self::PKCS7),
      MCRYPT_MODE_ECB
    );
  }
}

echo bin2hex(MySQL_Function::AES_encrypt( "Hello World", "password" ));

?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL VARCHAR अधिकतम आकार क्या है?

  2. SQL में 'AND' और '&&' के बीच का अंतर

  3. इसके साथ मदद करें:त्रुटि 1025 (HY000):नाम बदलने में त्रुटि .... (त्रुटि:150)

  4. AVG () - MySQL में एक कॉलम के औसत मान की गणना करें

  5. MySQL विवरण तैयार करें - अधिकतम लंबाई 1000 वर्ण