यह देखते हुए कि लैरवेल का Crypt
हमेशा नमक जोड़ता है, और इसलिए एक ही एन्क्रिप्शन के दो उदाहरण समान नहीं होते हैं।लार्वा क्रिप्ट - मूल्यों की तुलना
आम तौर पर, यह ठीक है क्योंकि मैं दोनों के डिक्रिप्ट संस्करण की तुलना कर सकता हूं। हालांकि, अगर मैं डेटाबेस में एन्क्रिप्ट किया गया मान खोजना चाहता हूं तो क्या होगा?
कहें कि मेरे पास users
की एक तालिका है और मैं ईमेल पता एन्क्रिप्ट करना चाहता हूं। अब मैं ईमेल [email protected]
ईमेल से किसी को ढूंढना चाहता हूं।
मैं इसके लिए क्वेरी लिखने के लिए कैसे जा सकता हूं? मैं सिर्फ Crypt::encrypt($email)
नहीं कर सकता और खोज कर सकता हूं क्योंकि encrypt
के इस पुनरावृत्ति डीबी में से एक से अलग होगा।
संपादित
वर्तमान में, केवल बात मैं के बारे में सोच सकते हैं सभी पाने के लिए, और उन के माध्यम से फ़िल्टर कर रहा है:
$match = User::all()->filter(function($record) use($email) {
$field = $record->email['email'];
if(Crypt::decrypt($field) == $email) return $record;
});
लेकिन इस भयानक है। मैं सबकुछ खोजना नहीं चाहता हूं।
मुझे लगता है कि यह चारों ओर एक ही रास्ता एक निश्चित 'key' और' iv' का उपयोग कर अपने डेटा को एन्क्रिप्ट किया जाएगा है। ऐसा करने के लिए मुझे क्रिप्ट क्लास का विस्तार करना मुश्किल नहीं होगा। – Jeemusu
आप उस ईमेल के हैश के साथ एक और कॉलम जोड़ने पर विचार कर सकते हैं जिसका आप तुलना कर सकते हैं। –