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

MySql कार्यक्षेत्र एईएस 256 डिक्रिप्शन

आपकी पहली क्वेरी में वास्तव में कुछ भी गलत नहीं है, वाक्य-रचना की दृष्टि से यह हाजिर है क्योंकि यह काम किया हुआ उदाहरण प्रदर्शित करता है।

mysql> SET @@SESSION.block_encryption_mode = 'aes-256-cbc';

mysql> create table MyTable(
    ->  Encrypted_ID varbinary(256),
    ->  InitializationVector_iv varbinary(16)
    -> );
Query OK, 0 rows affected (0.93 sec)

mysql> SET @iv = RANDOM_BYTES(16);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO MyTable SET Encrypted_ID = AES_ENCRYPT('hello','key', @iv), InitializationVector_iv = @iv;
Query OK, 1 row affected (0.17 sec)

mysql> SELECT CAST(AES_DECRYPT(Encrypted_ID,'key', InitializationVector_iv) AS CHAR) from MyTable;
+------------------------------------------------------------------------+
| CAST(AES_DECRYPT(Encrypted_ID,'key', InitializationVector_iv) AS CHAR) |
+------------------------------------------------------------------------+
| hello                                                                  |
+------------------------------------------------------------------------+
1 row in set (0.00 sec)

यह क्यों काम नहीं कर रहा है, मैं 2 परिदृश्यों में NULL को वापस करने के लिए क्वेरी प्राप्त करने में कामयाब रहा। एक, यदि आप एन्क्रिप्शन और डिक्रिप्शन के लिए एक अलग iv का उपयोग करते हैं तो आपको NULL वापस मिल जाता है, इसलिए हो सकता है कि आप यह देखना चाहें कि आप iv के रूप में कैसे स्टोर कर रहे हैं। दो, आपको NULL मिलता है जहां आपके पास ब्लॉक_एन्क्रिप्शन_मोड वैरिएबल अलग-अलग सेट होता है जब भंडारण और मूल्य पुनर्प्राप्त करने का प्रयास करते समय, जांचें कि आप सत्रों के बीच डिफ़ॉल्ट 'एईएस-128-ईबीसी' पर गलती से वापस नहीं जा रहे हैं। अन्य भी हो सकते हैं...

दूसरी क्वेरी विफल हो जाएगी क्योंकि आपको एन्क्रिप्शन और डिक्रिप्शन दोनों कार्यों के लिए iv की आपूर्ति करने की आवश्यकता है, आप इसे केवल एन्क्रिप्ट करने के लिए उपयोग करते हैं। साथ ही, चूंकि आप MyTable से मान ले रहे हैं, Encrypted_ID पहले से ही एन्क्रिप्ट किया जाएगा और इस क्वेरी का प्रभाव इसे फिर से एन्क्रिप्ट करना होगा, इसे उलटने से पहले आपको संग्रहीत (एन्क्रिप्टेड) ​​मान पर वापस लाने के लिए।

अंत में, एईएस केवल 16 का उपयोग करने जा रहा है। बाइट्स iv का ताकि आप उस शब्दावली(16) को भी बना सकें।



  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 हटाए गए आईडी का पुन:उपयोग करेगा

  2. मेरे पास MySQL लॉग शेड्यूल किए गए ईवेंट कैसे हो सकते हैं?

  3. गतिविधि स्ट्रीम के लिए इंटेलिजेंट MySQL GROUP BY

  4. क्या मोंगोडीबी डेटा को पढ़ना संभव है, इसे हडोप के साथ संसाधित करना और इसे आरडीबीएस (माईएसक्यूएल) में आउटपुट करना संभव है?

  5. कुछ मानों को संयोजित करते हुए एकाधिक तालिकाओं से एकल पंक्ति में डेटा प्राप्त करना