मैं SHA256एक पासवर्ड + नमक पर चलने जा रहा हूं , लेकिन मुझे नहीं पता कि VARCHARMySQL डेटाबेस को सेट करते समय मुझे कब तक बनाना है। एक अच्छी लंबाई क्या है?
मैं SHA256एक पासवर्ड + नमक पर चलने जा रहा हूं , लेकिन मुझे नहीं पता कि VARCHARMySQL डेटाबेस को सेट करते समय मुझे कब तक बनाना है। एक अच्छी लंबाई क्या है?
जवाबों:
एक sha256 256 बिट लंबा है - जैसा कि इसके नाम से संकेत मिलता है।
चूँकि sha256 एक हेक्साडेसिमल निरूपण देता है, 4 बिट्स प्रत्येक वर्ण को एन्कोड करने के लिए पर्याप्त हैं (8 के बजाय, ASCII के लिए), इसलिए 256 बिट 64 हेक्स वर्णों का प्रतिनिधित्व करेंगे, इसलिए आपको एक varchar(64)या एक की आवश्यकता है char(64), क्योंकि लंबाई हमेशा समान होती है , बिल्कुल अलग नहीं है।
और डेमो:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
तुम्हे दूंगा :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
यानी 64 अक्षरों वाला एक तार।
varchar(65)एक अग्रणी !... का उपयोग करके ।
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))यह हमेशा 44 होता है जो मूल स्ट्रिंग की लंबाई है।
SHA256 के 256 बिट्स के लिए एन्कोडिंग विकल्प:
CHAR(44)पैडिंग कैरेक्टर सहितCHAR(64)BINARY(32)=छीन लिया जा सकता है और फिर से जोड़ा जा सकता है।
मैं BINARY (32) का उपयोग करना पसंद करता हूं क्योंकि यह अनुकूलित तरीका है!
आप उस 32 हेक्स अंकों को (00 से एफएफ) में रख सकते हैं।
इसलिए BINARY (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)। फिर, जब इसे पुनः प्राप्त करते हैं, तो आप SELECT HEX(hash_column) AS hash_column।
आप इसे VARCHAR क्यों बनाएंगे? यह अलग नहीं है। यह हमेशा 64 वर्णों का होता है, जिसे ऑनलाइन SHA-256 कैलकुलेटर में से कुछ में चलाकर निर्धारित किया जा सकता है ।
SHA-*हैश पासवर्ड का उपयोग करें, कृपया इसे पहले पढ़ें ।