कोई एन्क्रिप्शन एल्गोरिदम नहीं है, प्रति से, पायथन में बनाया गया है। हालांकि, आप Python Cryptography Toolkit (PyCrypt) को देखना चाहेंगे। मैंने केवल इसके साथ tinkered है, लेकिन यह Python के दस्तावेज में cryptographic services पर संदर्भित है। यहाँ कैसे आप PyCrypt का उपयोग कर एईएस के साथ एक स्ट्रिंग एन्क्रिप्ट सकता है की एक उदाहरण है:
from Crypto.Cipher import AES
from urllib import quote
# Note that for AES the key length must be either 16, 24, or 32 bytes
encryption_obj = AES.new('abcdefghijklmnop')
plain = "Testing"
# The plaintext must be a multiple of 16 bytes (for AES), so here we pad it
# with spaces if necessary.
mismatch = len(plain) % 16
if mismatch != 0:
padding = (16 - mismatch) * ' '
plain += padding
ciph = encryption_obj.encrypt(plain)
# Finally, to make the encrypted string safe to use in a URL we quote it
quoted_ciph = quote(ciph)
आप तो शायद GET अनुरोध के भाग के रूप में अपने URL के इस भाग होगा,।
डिक्रिप्ट करने के लिए, बस प्रक्रिया को उलट दें; यह सोचते हैं कि encryption_obj
ऊपर के रूप में बनाया गया है, और है कि आप यूआरएल के प्रासंगिक भाग लिया गया गया है, इस लिए यह करना होगा: एक सरल विधि प्राथमिक हैश करने के लिए होगा:
from urllib import unquote
# We've already created encryption_object as shown above
ciph = unquote(quoted_ciph)
plain = encryption_obj.decrypt(ciph)
तुम भी एक अलग दृष्टिकोण पर विचार हो सकता कुंजी (नमक के साथ, यदि आप चाहें) और अपने डेटाबेस में हैश और पीके स्टोर करें। उपयोगकर्ता को अपने लिंक के हिस्से के रूप में हैश दें, और जब वे हैश वापस लौटें और प्रस्तुत करें, संबंधित पीके देखें और उचित ऑब्जेक्ट को वापस करें।
(। आप इस मार्ग से जाने के लिए चाहते हैं, बाहर अंतर्निर्मित संग्रहालय में hashlib जांच) उदाहरण के लिए, आप इस models.py में परिभाषित की तरह कुछ होगा:
class Pk_lookup(models.Model):
# since we're using sha256, set the max_length of this field to 32
hashed_pk = models.CharField(primary_key=True, max_length=32)
key = models.IntegerField()
और तुम ' डी निम्नलिखित में से कुछ का उपयोग करके हैश उत्पन्न करता है:
import hashlib
import Pk_lookup
hash = hashlib.sha256()
hash.update(str(pk)) # pk has been defined previously
pk_digest = hash.digest()
lookup = Pk_lookup(hashed_pk=pk_digest,key=pk)
lookup.save()
ध्यान दें कि आपको इस संस्करण को भी उद्धृत करना होगा; यदि आप चाहें, तो digest
के बजाय hexdigest()
का उपयोग कर सकते हैं (आपको परिणामी स्ट्रिंग को उद्धृत करने की आवश्यकता नहीं है), लेकिन आपको फ़ील्ड की लंबाई 64 तक समायोजित करना होगा।
आप क्यों नहीं बस इस बात के लिए' session' का उपयोग नहीं करते – voyager
मुझे लगता है कि आपका मतलब उपयोगकर्ता लेख की जांच करना है, हां, मैं वास्तव में उन्हें उपयोगकर्ता भी दूंगा लेकिन मैं भी उपयोगकर्ताओं को आइटम पिक्स नहीं दिखाना चाहता हूं और इसके बजाय उन्हें क्रिप्ट करना चाहता हूं। – Hellnar