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

MySQL में SHA1 हैश मान संग्रहीत करना

मैं VARCHAR . का उपयोग करूंगा चर लंबाई डेटा के लिए, लेकिन निश्चित लंबाई डेटा के साथ नहीं। क्योंकि SHA-1 मान हमेशा होता है 160 बिट लंबा, VARCHAR बस बर्बाद कर देगा फिक्स्ड की लंबाई के लिए एक अतिरिक्त बाइट- लंबाई फ़ील्ड

और मैं मान को SHA1 लौट रहा है। क्योंकि यह प्रति वर्ण केवल 4 बिट का उपयोग करता है और इस प्रकार 160/4 =40 वर्णों की आवश्यकता होगी। लेकिन यदि आप प्रति वर्ण 8 बिट का उपयोग करते हैं, तो आपको केवल 160/8 =20 वर्ण लंबे फ़ील्ड की आवश्यकता होगी।

इसलिए मैं आपको BINARY(20) और UNHEX समारोह SHA1 . को कन्वर्ट करने के लिए बाइनरी के लिए मूल्य।

मैंने BINARY(20) . के लिए संग्रहण आवश्यकताओं की तुलना की और CHAR(40)

CREATE TABLE `binary` (
    `id` int unsigned auto_increment primary key,
    `password` binary(20) not null
);
CREATE TABLE `char` (
    `id` int unsigned auto_increment primary key,
    `password` char(40) not null
);

लाखों रिकॉर्ड के साथ binary(20) 44.56M लेता है, जबकि char(40) 64.57M लेता है।InnoDB इंजन।



  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 में D.O.B फ़ील्ड से आयु कैसे प्राप्त करें?

  2. mysql में अगली ऑटो-इन्क्रीमेंट आईडी कैसे प्राप्त करें?

  3. बेस 64 इमेज सेलेक्ट और डेटाबेस से एनकोड करने पर पाया गया धीमापन

  4. mysql एक्सटेंशन को हटा दिया गया है और भविष्य में हटा दिया जाएगा:इसके बजाय mysqli या PDO का उपयोग करें

  5. PHP का उपयोग करके MySQL डेटाबेस में IP पता संग्रहीत करना