अधिकांश एन्क्रिप्शन (या हैशिंग, आदि) रूटीन का आउटपुट मनमाना बाइनरी डेटा है, जिसे बिना एन्कोडिंग के URL में सुरक्षित रूप से शामिल नहीं किया जा सकता है।
एग्याल नोट्स के रूप में
, बस urlencode()
. का उपयोग करके डेटा पर पर्याप्त होना चाहिए। हालांकि, मानक यूआरएल-एन्कोडिंग यादृच्छिक बाइनरी डेटा को एन्कोड करने का सबसे कॉम्पैक्ट तरीका नहीं हो सकता है। Base64
एन्कोडिंग अधिक कुशल होगा, लेकिन दुर्भाग्य से +
. के उपयोग के कारण यह पूरी तरह से URL-सुरक्षित नहीं है चरित्र।
सौभाग्य से, बेस 64 एन्कोडिंग का एक मानकीकृत यूआरएल-सुरक्षित संस्करण मौजूद है, जिसे RFC 4648में निर्दिष्ट किया गया है। ए> "बेस 64url" के रूप में। PHP में इस एन्कोडिंग का उपयोग करके डेटा को एन्कोडिंग और डिकोडिंग के लिए कार्यों की एक जोड़ी है, इस उत्तर के आधार पर "गुट्ज़मर एट यूएसए डॉट नेट" :
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(strtr($data, '-_', '+/'));
}
(मैंने डिकोडिंग फ़ंक्शन को थोड़ा सरल कर दिया है, क्योंकि PHP के कम से कम वर्तमान संस्करणों को स्पष्ट रूप से =
की आवश्यकता नहीं है। base64_decode()
. के इनपुट में वर्णों को पैड करना ।)
पी.एस. पहली बार में यादृच्छिक टोकन को सुरक्षित रूप से उत्पन्न करने के लिए, उदाहरण देखें। यह सवाल ।