পাইথনের তৈরি এমডি 5 হ্যাশ শেলের ইকো এবং এমডি 5সাম ব্যবহার করে তৈরি করা থেকে আলাদা কেন?


109

একটি পাইথন MD5 হ্যাশ শেলের md5sum কমান্ড দ্বারা তৈরি করা চেয়ে পৃথক is কেন?

>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python


$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3  - # Result on the shell

উত্তর:


198

echoসংযুক্ত করা হয় \nযেহেতু আপনি সাধারণত আপনার শেলের একটি লাইন ব্রেকের সাথে শেষ না হওয়া লাইনগুলি চান না (প্রম্পটটি খুব বাম দিকে শুরু না হলে এটি দেখতে খুব খারাপ লাগে) looks ট্রেলিং লাইনব্রেক বাদ দিতে আর্গুমেন্টটি
ব্যবহার করুন -nএবং এটি আপনার পাইথন স্ক্রিপ্টের মতো একই চেকসাম মুদ্রণ করবে:

> echo -n mystringforhash | md5sum
86b6423cb6d211734fc7d81bbc5e11d3  -

53
প্রকৃতপক্ষে এটি আমি যে বড় উদাহরণগুলি ব্যবহার করি তার মধ্যে আমি যখন লোকদের বলি যে শেল স্ক্রিপ্টগুলিতে সাধারণত শেল স্ক্রিপ্টগুলিতে আরও ভাল কাজ করা হয় বলে মনে হয় এমন কাজের জন্য শেল স্ক্রিপ্টগুলির পরিবর্তে আরও বেশি পাইথন বা হাইজার স্তরের ভাষা ব্যবহার করতে বলি। মিশ্র ডেটা এবং কোডের প্রকৃতি এবং প্রতিটি কমান্ডের জন্য পৃথক বাক্য গঠন সমস্ত শেল স্ক্রিপ্টকে অদৃশ্য ত্রুটির প্রবণ করে
তোলে

7
যদি কেবল দেওয়া জিনিসটি "শেল" হয় তবে আপনি echoকার্যক্ষম -nপতাকা পেতে বিশ্বাস করতে পারবেন না । পসিক্স নিম্নলিখিত সম্পর্কে বলেছেন echo: "যদি প্রথম অপারেন্ড হয় -n, বা যদি কোনও অপারেন্ডের একটি <backslash>চরিত্র থাকে তবে ফলাফলগুলি বাস্তবায়ন-সংজ্ঞায়িত হয়" " (উত্স: pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html )। printfপরিবর্তে ব্যবহার করুন।
মিক্কো রেন্টালাইনেন

সমস্যাটির প্রতিধ্বনি নয়, তবে এমডি 5সাম (এখন ম্যাকের এমডি 5) এবং শসুম যা শেষের দিকে \ n যোগ করছে
পুনেরুদ

@ পুনারুদ: না। আউটপুট md5sumএখানে কিছু যায় আসে না। ইনপুট দেয়। এবং ছাড়াও -nইকো একটি লাইন ব্রেককে সংযোজন করে, যার ফলশ্রুতিতে একটি ভিন্ন হ্যাশ হয়।
চোরমাস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.