AES কী উত্পন্ন করার জন্য ওপেনএসএসএল হ্যাশ ফাংশন


8

AES-256 এর জন্য কী তৈরি করতে ওপেনএসএসএল কোন হ্যাশ ফাংশন ব্যবহার করে? আমি তাদের ডকুমেন্টেশনে এটি কোথাও খুঁজে পাচ্ছি না।

$ touch file
$ openssl aes-256-cbc -nosalt -P -in file

enter aes-256-cbc encryption password: (I type "a" and hit enter)
Verifying - enter aes-256-cbc encryption password: (I type "a" and hit enter)

key=0CC175B9C0F1B6A831C399E269772661CEC520EA51EA0A47E87295FA3245A605
iv =4FA92C5873672E20FB163A0BCB2BB4A4

"এ" ইনপুটটির key=জন্য দ্বিতীয় শেষ লাইনে কোন হ্যাশ অ্যালগরিদম আনসাল্টেড হ্যাশ তৈরি করে ?

উত্তর:


9

মোটামুটি নিশ্চিত যে এটি একটি SHA1 ডাইজেস্ট অ্যালগরিদম তবে সমস্ত সততার সাথে আমি 100% নিশ্চিততার সাথে বলতে পারি না।

এবং কে ভেবেছিলেন যে অবজ্ঞাপূর্ণতা বাড়ানোর জন্য ডিজাইন করা কিছুতে অবলুপ্ত নির্দেশনা রয়েছে;)

সম্পাদনা: এটি আপনার পরিস্থিতিতে সহায়ক নাও হতে পারে তবে আমি অনুমান করি যে আপনি সর্বদা এটি করার মাধ্যমে জানতে পারবেন

openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p 

আমি নির্ধারণ করেছি যে এটি ডিফল্টরূপে MD5 ব্যবহার করে, যেমন আমি যখন আপনার কমান্ডটি ব্যবহার করি (সিডনোট: এই বিকল্পগুলির কোনওটিই ম্যাজ পৃষ্ঠাতে নথিভুক্ত করা হয় না ...) এর md5পরিবর্তে sha1, আমি মূলত পোস্ট হিসাবে একই ফলাফল পেয়েছি। প্রশ্নটি হল, এমডি 5 (128-বিট হ্যাশিং অ্যালগরিদম) থেকে এটি 256 বিট কীভাবে পাবে?
এম কে 12

এটি করার একটি উপায় হ'ল দু'জন পৃথক MD5 এর বাইনারি ফর্মের সাথে সংমিশ্রণ করা যা ফলস্বরূপ 256 বিট কী তৈরি করে। এটির জন্য আরও কয়েকটি পদ্ধতি রয়েছে। আপনি পিএইচপি প্যাকেজ "md5_base64" পরীক্ষা করে দেখতে পারেন। এমনকি আপনি পিএইচপি লোক না হলেও ডক্সগুলি বেশ তথ্যপূর্ণ।
স্নাস্টিকেল

4

এটি দুটি এমডি 5 হ্যাশের সংমিশ্রণ।

এটি এর মত উত্পন্ন:

128bit_Key = MD5(Passphrase + Salt)
256bit_Key = 128bit_Key + MD5(128bit_Key + Passphrase + Salt)

আপনি এটি করে এটি পরীক্ষা করতে পারেন:

$ echo Testing > file
$ openssl enc -aes-256-cbc -p -in file -out file.aes -salt
: enter aes-256-cbc encryption password: abc
: Verifying - enter aes-256-cbc encryption password: abc
: salt=3025373CA0530C93
: key=E165475C6D8B9DD0B696EE2A37D7176DFDF4D7B510406648E70BAE8E80493E5E
: iv =B030394C16C76C7A94DC22FDDB6B0744
$ perl -e 'print pack "H*", "3025373CA0530C93"' > salt
$ echo -n abc > passphrase
$ cat passphrase > key.128.tmp
$ cat salt >> key.128.tmp
$ md5sum key.128.tmp 
: e165475c6d8b9dd0b696ee2a37d7176d  key.128.tmp
$ perl -e 'print pack "H*", "e165475c6d8b9dd0b696ee2a37d7176d"' > key.128
$ cat key.128 > key.256.tmp
$ cat passphrase >> key.256.tmp
$ cat salt >> key.256.tmp
$ md5sum key.256.tmp 
: fdf4d7b510406648e70bae8e80493e5e  key.256.tmp

লক্ষ্য করুন যে কীভাবে MD5 এর 'key.128.tmp' এবং 'key.256.tmp' উভয় মিলে প্রাথমিক কমান্ডে আউটপুট হিসাবে একই কী গঠন করে।


এবং আপনি যদি কোনও তৃতীয় পুনরাবৃত্তি করেন আপনি আইভি পাবেন। এই কেসটি সুবিধাজনক কারণ কী এবং ডেটা = IV মাপ (256 এবং 128 বিট) উভয় হ্যাশ আউটপুটের সঠিক গুণক; সাধারণভাবে আপনি হ্যাশ আউটপুটগুলি একত্রিত করেন এবং চাবির জন্য প্রথম কে বিট এবং চতুর্থ ডি এর বিট নেন V
dave_thompson_085

আপডেট: ডিফল্টটি এমডি 5 হিসাবে ব্যবহৃত হত, তবে 2016 সালে এটি 1.1.0 এ sha256। Crypto.stackexchange.com/questions/3298/…
dave_thompson_085

2

ওপেনএসএসএল এসএএএ 1 সহ এইএস ব্যবহার করে।

আপনি যদি ওপেনএসএসএল-এর চেয়ে ভাল-লিখিত উত্স পরীক্ষা করতে চান তবে নিবন্ধটি
সি ++ শ্রেণিতে দেখুন যা ওপেনএসএসএল সিফারগুলিকে ইন্টারফেস করে

নিবন্ধটিতে খুব সাধারণ উত্স কোড রয়েছে যা:

ওপেনএসএসএল এএস-256-সিবিসি সাইফার এবং SHA1 ডাইজেস্ট অ্যালগরিদম ব্যবহার করে আপনাকে ফাইলগুলি বা স্ট্রিংগুলি এনক্রিপ্ট এবং ডিক্রিপ্ট করতে দেয়। এটি ওপেনসেল কমান্ড লাইন সরঞ্জামের সাহায্যে আন্তঃযোগযোগ্য যা সিফারগুলির জন্য ওপেনএসএসএল ব্যবহারের জন্য এটি একটি ভাল পরিচিতি তৈরি করে।


1

আমি উত্তরটি জানি না, তবে আপনি সম্ভবত এটি ওপেনএসএসএল উত্স কোডে খুব সহজেই খুঁজে পেতে পারেন ।


2
"সহজেই যথেষ্ট" - mainফাংশন (যেখানে পাসওয়ার্ড জিজ্ঞাসার কার্যকারিতাটি থাকে) ~ 500 লাইন দীর্ঘ এবং এর দ্বারা লিটারযুক্ত goto
এম কে 12

5
কি দারুন. আমি স্রেফ কোডটি দেখেছি। এটি কার্যত অপঠনযোগ্য। কোন মন্তব্য নেই. এক-বর্ণের পরিবর্তনশীল নাম। বিতৃষ্ণা। আমি দুঃখিত বলে আমি পরামর্শ দিয়েছি।
ফ্রান্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.