কি সবচেয়ে সহজ পদ্ধিতি হল উপায় একটি র্যান্ডম হ্যাশ পাইথন মধ্যে (MD5) জেনারেট করতে?
import uuid; uuid.uuid().hex
stackoverflow.com/a/20060712/3218806
কি সবচেয়ে সহজ পদ্ধিতি হল উপায় একটি র্যান্ডম হ্যাশ পাইথন মধ্যে (MD5) জেনারেট করতে?
import uuid; uuid.uuid().hex
stackoverflow.com/a/20060712/3218806
উত্তর:
একটি এমডি 5-হ্যাশ কেবল একটি 128-বিট মান, তাই আপনি যদি এলোমেলো একটি চান:
import random
hash = random.getrandbits(128)
print("hash value: %032x" % hash)
যদিও আমি সত্যিই বিষয়টি দেখতে পাচ্ছি না। আপনার কেন এটি প্রয়োজন তা বিশদভাবে জানা উচিত ...
os.urandom
:''.join('%02x' % ord(x) for x in os.urandom(16))
আমি মনে করি আপনি যা সন্ধান করছেন এটি সর্বজনীন অনন্য শনাক্তকারী T
import uuid
uuid.uuid4().hex
ইউআইইডি 4 আপনাকে একটি এলোমেলো অনন্য শনাক্তকারী দেয় যা এমডি 5 যোগফলের সমান দৈর্ঘ্য। হেক্স একটি ইউউইড অবজেক্ট ফিরিয়ে দেওয়ার পরিবর্তে হেক্স স্ট্রিং হিসাবে উপস্থাপন করবে।
দ্য secrets
মডিউল পাইথন 3.6+ মধ্যে যোগ করা হয়েছিল। এটি একক কল সহ ক্রিপ্টোগ্রাফিক সুরক্ষিত এলোমেলো মান সরবরাহ করে। ফাংশনগুলি একটি alচ্ছিক nbytes
আর্গুমেন্ট গ্রহণ করে, ডিফল্ট হয় 32 (বাইটস * 8 বিট = 256-বিট টোকেন)। MD5 এর 128-বিট হ্যাশ রয়েছে, সুতরাং "MD5- জাতীয়" টোকেনের জন্য 16 সরবরাহ করুন।
>>> import secrets
>>> secrets.token_hex(nbytes=16)
'17adbcf543e851aa9216acc9d7206b96'
>>> secrets.token_urlsafe(16)
'X7NYIolv893DXLunTzeTIQ'
>>> secrets.token_bytes(128 // 8)
b'\x0b\xdcA\xc0.\x0e\x87\x9b`\x93\\Ev\x1a|u'
এটি অজগর 2.x এবং 3.x উভয়ের জন্য কাজ করে
import os
import binascii
print(binascii.hexlify(os.urandom(16)))
'4a4d443679ed46f7514ad6dbe3733c3d'
তবুও আরেকটি পন্থা। এটি পেতে আপনাকে কোনও বিন্যাস করতে হবে না।
import random
import string
def random_string(length):
pool = string.letters + string.digits
return ''.join(random.choice(pool) for i in xrange(length))
স্ট্রিংয়ের দৈর্ঘ্যে আপনাকে নমনীয়তা দেয়।
>>> random_string(64)
'XTgDkdxHK7seEbNDDUim9gUBFiheRLRgg7HyP18j6BZU5Sa7AXiCHP1NEIxuL2s0'
''.join(random.sample(string.ascii_letters + string.digits, 8))
অজগর আরও?
from hashlib import md5
plaintext = input('Enter the plaintext data to be hashed: ') # Must be a string, doesn't need to have utf-8 encoding
ciphertext = md5(plaintext.encode('utf-8').hexdigest())
print(ciphertext)
এটিও লক্ষ করা উচিত যে MD5 একটি খুব দুর্বল হ্যাশ ফাংশন, সংঘর্ষগুলিও পাওয়া গেছে (দুটি পৃথক প্লেইনেক্সট মান একই হ্যাশের ফলস্বরূপ) কেবল একটি এলোমেলো মান ব্যবহার করুন plaintext
।