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

PHP मैक्रिप्ट के साथ एन्क्रिप्ट करें और MySQL aes_decrypt के साथ डिक्रिप्ट करें?

मुझे कुछ अच्छी मदद मिली यहां

ध्यान दें कि यह प्लेन टेक्स्ट में 65519 वर्णों तक के एन्क्रिप्टेड टेक्स्ट के लिए काम करता है। (शायद थोड़ा और अगर कोई UTF-8 एन्कोडिंग नहीं है)

एन्क्रिप्ट करने के लिए PHP कोड:

// MySQL uses 16 bytes key for 128 encryption/decryption
$key = "ABCDEF0123456789";

$plaintext = "This string was AES-128 / EBC / ZeroBytePadding encrypted.";
// Optionally UTF-8 encode
$plaintext_utf8 = utf8_encode($plaintext);
// Find out what's your padding
$pad_len = 16 - (strlen($plaintext_utf8) % 16);
// Padd your text
$plaintext_utf8 = str_pad($plaintext_utf8, (16 * (floor(strlen($plaintext_utf8) / 16) + 1)), chr($pad_len));

// Encryption
mt_srand();
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($td, $key, false);
// Generates a warning about empty IV but it's Ok
$ciphertext = mcrypt_generic($td, $plaintext_utf8);
mcrypt_generic_deinit($td);
$ciphertext = mysql_real_escape_string($ciphertext);

// Store in MySQL
$mysqli = new mysqli("localhost", "test", "test", "test");
$mysqli->set_charset("utf8");
$mysqli->query("insert into test(content) value ('$ciphertext')");
$mysqli->close();

string was :

SELECT CAST(AES_DECRYPT(content,'ABCDEF0123456789') AS CHAR) AS content
FROM test
WHERE CAST(AES_DECRYPT(content,'ABCDEF0123456789') AS CHAR) like '%string was%';

आउटपुट है:

This string was AES-128 / EBC / ZeroBytePadding encrypted.

नोट:MySQL तालिका किसके द्वारा बनाई गई थी:

create table test (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
content blob ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prometheus और ClusterControl के साथ अपने ProxySQL की निगरानी कैसे करें

  2. UTF-8 डेटाबेस समस्या

  3. मैं php और mysql का उपयोग करके एक टैगिंग सिस्टम कैसे बना सकता हूं?

  4. GB में mysql तालिका का आकार कैसे प्राप्त करें

  5. मैं .NET के लिए MySQL कनेक्टर का संदर्भ कैसे जोड़ूं?