मैं 15.04 lubuntu पर जावा आधारित neo4j ग्राफ डेटाबेस का उपयोग कर रहा हूं।
Neo4j HTTP प्रमाणीकरण हेडर 'उपयोगकर्ता नाम: पासवर्ड' के base64 एन्कोडिंग का उपयोग करता है (उद्धरण सहित नहीं)। वायरशर्क का उपयोग करके मैं neo4j द्वारा निर्मित बेस 64 कोड देख सकता हूं।
हालाँकि, अगर मैं एक ही स्ट्रिंग को एनकोड करने के लिए ubuntu coreutils base64 का उपयोग करता हूं तो मुझे थोड़ा अलग एन्कोडिंग मिलता है। इस एन्कोडिंग को neo4j द्वारा स्वीकार नहीं किया गया है।
दोनों एन्कोडिंग सही उपयोगकर्ता नाम: पासवर्ड स्ट्रिंग को डिकोड करते हैं
उदाहरण
उपयोगकर्ता नाम = neo4j
और पासवर्ड =@N
Neo4j की एन्कोडेड मूल्य देता है neo4j:@N
के रूप में bmVvNGo6QE4=
करने के लिए जो डीकोड neo4j:@N
अपेक्षा के अनुरूप
$ echo 'bmVvNGo6QE4=' | base64 --decode
neo4j:@N
उबंटू coreutils base64
रिटर्न के एन्कोडेड मूल्य neo4j:@N
के रूप में bmVvNGo6QE4K
(जो पिछले चरित्र में अलग है), लेकिन अभी भी सही ढंग डीकोड;
$ echo 'neo4j:@N' | base64
bmVvNGo6QE4K
$ echo 'bmVvNGo6QE4K' | base64 --decode
neo4j:@N
ऐसा क्यों है? सुसंगत एन्कोडिंग प्राप्त करने के लिए मुझे क्या करने की आवश्यकता है?
=
सामान्य बेस 64 में पेडिंग है (और केवल अंत में मान्य है)। तथ्य यह है कि एक एन्कोडेड स्ट्रिंग में पैडिंग है और दूसरा (या आमतौर पर, दोनों स्ट्रिंग्स में अलग-अलग मात्रा में पेडिंग नहीं है) एक मृत सस्ता है कि दोनों अलग-अलग लंबाई के हैं और इस तरह संभवतः समान नहीं हो सकते।