কিভাবে একটি এলোমেলো স্ট্রিং উত্পন্ন?


209

আমি একটি এলোমেলো স্ট্রিং তৈরি করতে চাই (যেমন পাসওয়ার্ড, ব্যবহারকারীর নাম ইত্যাদি)। প্রয়োজনীয় দৈর্ঘ্য নির্দিষ্ট করা সম্ভব (উদাহরণস্বরূপ 13 টি অক্ষর)।

আমি কোন সরঞ্জামগুলি ব্যবহার করতে পারি?

(সুরক্ষা এবং গোপনীয়তার কারণে, একটি ওয়েবসাইটে অনলাইনের বিপরীতে স্ট্রিংগুলি অফ-লাইন তৈরি করা ভাল is


1
AskUbuntu এ ইতিমধ্যে ভাল উত্তর রয়েছে । (আমি apgব্যক্তিগতভাবে ব্যবহার করি ))
স্পারহক

1
@ স্পারহাক আস্ক উবুন্টু প্রশ্ন / উত্তর তালিকাভুক্তির সরঞ্জাম সম্পর্কে আরও বেশি। এলোমেলো স্ট্রিং জেনারেট করতে কীভাবে ব্যবহার apgকরবেন তা প্রদর্শন করে এখানে একটি উত্তর যুক্ত করার বিষয়টি বিবেচনা করুন।
ল্যান্ড্রোনি

1
কম্পিউটারে এলোমেলো সংখ্যা জেনারেশন ব্যবহার সম্পর্কে সতর্ক থাকুন। কিছু উপস্থিত হওয়ার চেয়ে এলোমেলোভাবে কম, তবে 'ভাল' এবং 'খারাপ' এলোমেলো সংখ্যা জেনারেশনের মধ্যে পার্থক্য বলা বেশ শক্ত।
সোব্রিক

সিউডো-এলোমেলো সংখ্যা জেনারেটর (উদাহরণস্বরূপ /dev/urandom) সম্পর্কে @ সোব্রিক দুর্দান্ত পয়েন্ট । উদাহরণস্বরূপ, random.org এর উপর ভিত্তি করে সত্যিকারের এলোমেলো সংখ্যা জেনারেটর ব্যবহার করে কিছু উত্তর পেয়ে ভাল লাগবে
ল্যান্ড্রোনি

25
কৌতুকের উত্তর: সত্যিকারের এলোমেলো স্ট্রিং তৈরি করতে ইমাকস (বা ভিম) এর সামনে একটি নতুন ব্যবহারকারী রাখুন এবং তাদের প্রস্থান করতে বলুন। ;)
ওয়াইল্ডকার্ড

উত্তর:


186

এটি করার আমার প্রিয় উপায় হ'ল /dev/urandomএকসাথে ব্যবহার করে trঅযাচিত অক্ষর মুছতে। উদাহরণস্বরূপ, কেবলমাত্র অঙ্ক এবং অক্ষরগুলি পেতে:

head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo ''

বিকল্পভাবে, OWASP পাসওয়ার্ড বিশেষ অক্ষর তালিকা থেকে আরও অক্ষর অন্তর্ভুক্ত করতে :

</dev/urandom tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 13  ; echo

trইনপুট সম্পর্কে অভিযোগ করতে যদি আপনার কিছু সমস্যা হয় তবে এটি যুক্ত করার চেষ্টাLC_ALL=C করুন :

LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 13 ; echo

15
বা এটি করুন: head /dev/urandom | tr -dc A-Za-z0-9 | head -c10- এই উপায়টি আরও সঠিক। আপনি 10 টি অক্ষর পাবেন যা রাজধানী,
নিম্ন

8
প্রথম headকমান্ড সমস্যাযুক্ত হতে পারে। এটি প্রথম 10 লাইন আউটপুট দেবে /dev/urandom, যার অর্থ এটি 10 ​​তম লাইনটি একবার দেখলে এটি বন্ধ হয়ে যাবে। সুতরাং trকমান্ড প্রেরণ আউটপুট দৈর্ঘ্য এলোমেলো হয়। সম্ভবত এটি থেকে আউটপুটে 13 টিরও কম অক্ষর থাকবে tr। আমি এই ঘটনার সম্ভাবনাটি গণনা করি নি, গণনাগুলি কিছুটা জটিল।
কাস্পার্ড

6
এটি এর মতো আরও ভাল করুন:<dev/urandom tr -dc "$charset" | head -c "$length"
PSkocik

3
+1 এখানে OWASP পাসওয়ার্ডের বিশেষ অক্ষর পৃষ্ঠা থেকে অন্যান্য অক্ষরগুলি অন্তর্ভুক্ত করার জন্য দ্রুত চেষ্টা করা হয়েছে , বাশ কমান্ড লাইনের জন্য পালিয়ে গেছে:tr -dc A-Za-z0-9\!\"#$\&\'\(\)\*+,-./\:\\\\\;\<=\>\?@[]^_`{\|}~
রুপ

2
@ রুপ আমি নিশ্চিত না যে আপনার tr ..কমান্ডের সাথে কী কাজ করছে না তবে কেবল সমস্ত উদ্ধৃতি দেওয়া (একক উদ্ধৃতি ব্যতীত) কাজ করে - tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~'
কেনি ইভিট

144

একটি এলোমেলো পাসওয়ার্ড তৈরি করতে আপনি ব্যবহার করতে পারেন pwgen:

pwgen এলোমেলো, অর্থহীন তবে উচ্চারণযোগ্য পাসওয়ার্ড তৈরি করে। এই পাসওয়ার্ডগুলিতে হয় কেবল ছোট হাতের অক্ষর, বা উপরের এবং লোয়ার কেস মিশ্রিত থাকে, বা অঙ্কগুলি ছুঁড়ে দেওয়া হয় U বড় হাতের অক্ষর এবং অঙ্কগুলি এমনভাবে স্থাপন করা হয় যে কেবল শব্দটি মুখস্থ করার সময় তাদের অবস্থানকে স্মরণ করতে সহজ হয়।

13 দৈর্ঘ্যের 7 পাসওয়ার্ড তৈরি করুন:

geek@liv-inspiron:~$ pwgen 13 7
Eu7Teadiphaec giepahl3Oyaiy iecoo9Aetaib4 phaiChae6Eivi athoo3igee8Co
Iphu4ufeDeelo aesoYi2lie9he 

মন্তব্যে উল্লিখিত হিসাবে, আপনি -sআর্গুমেন্টটি ব্যবহার করে এনট্রপি হ্রাস করা এড়াতে পারেন (অর্থাত্ আরও সুরক্ষিত, সম্পূর্ণ এলোমেলো তবে পাসওয়ার্ডগুলি মনে রাখা শক্ত):

geek@liv-inspiron:~$ pwgen -s 13 7
eAfycrPlM4cYv 4MRXmZmyIVNBp D8y71iqjG7Zq7 FQRHcserl4R8O yRCUtPtV3dsqV
0vJpp2h0OrgF1 QTp7MKtJyTrjz 

এলোমেলো ব্যবহারকারীর নাম উত্পন্ন করতে আপনি ব্যবহার করতে পারেন gpw:

এই প্যাকেজটি উচ্চারণযোগ্য পাসওয়ার্ড তৈরি করে। এটি আপনি যে কোনও অভিধান খাওয়ান তা থেকে নেওয়া তিন অক্ষরের সংমিশ্রণের (ট্রিগ্রেফ) পরিসংখ্যান ব্যবহার করে।

দৈর্ঘ্যের 13 টি পাসওয়ার্ড (ব্যবহারকারীর নাম) তৈরি করুন:

geek@liv-inspiron:~$ gpw 7 13
sreepoidahsas
risadiestinge
ntodynesssine
deodstestress
natinglumperm
riasigentspir
enderiferback

21
চাকা পুনরায় উদ্ভাবন না করার জন্য +1। আপনি যদি "উচ্চারণযোগ্য" সীমাবদ্ধতার হ্রাস করা এনট্রপি না চান, কেবল ব্যবহার করুন pwgen -s
নাট এল্ডারেজ

122

আমি opensslকমান্ডটি ব্যবহার করছি , ক্রিপ্টোগ্রাফির সুইস আর্মি ছুরি।

openssl rand -base64 12

অথবা

openssl rand -hex 12

10
rand -hexআমার কীবোর্ডের 90+ এর চেয়ে আউটপুটটিকে কেবল 16 টি অক্ষরে সীমাবদ্ধ করবে। বেস 64 আরও ভাল কারণ এটি characters৪ টি অক্ষর, তবে এটি এলোমেলো নয় (যেমন অনুমানযোগ্য প্যাডিং প্যাটার্ন রয়েছে এবং সম্ভবত কিছু অক্ষর অন্যদের তুলনায় বেশিবার প্রদর্শিত হয়)।
মার্টিন টর্নয়েজ

@ কারপেটসমোকার: নোট করুন যে উদাহরণটি openssl rand -base64 12আউটপুটটির 16 টি অক্ষর উত্পাদন করে (কারণ 256 মানগুলি 64 তে ম্যাপ করা হয়)। এবং হেক্স উদাহরণ 24 অক্ষর উত্পাদন করে। সাধারণ 1: 2 ম্যাপিংয়ের পরে হেক্সের ক্ষেত্রে কোনও ক্ষতি নেই, তবে প্যাডিং ব্যবহৃত হওয়ার পরে বেস 64 এর ক্ষেত্রে কিছুটা থাকতে পারে। র‌্যাডিক্সটি এলোমেলোভাবে প্রভাবিত করে না, এটি অন্যরকমভাবে ম্যাপ করা হয়। (এবং মোট বিট গণনা অনেক বেশি গুরুত্বপূর্ণ)।
ডেনিস উইলিয়ামসন

প্রশ্ন হলো, @DennisWilliamson "কিভাবে একটি নির্দিষ্ট দৈর্ঘ্যের একটি র্যান্ডম স্ট্রিং জেনারেট করতে" তাই যখন আপনার মন্তব্যকে সঠিক ছিল যেমন , এটা সঠিক নয় এই প্রশ্নের প্রেক্ষাপটে
মার্টিন টর্নয়েজ

@ কার্পেটস্মোকার: সেক্ষেত্রে এই উত্তর দুটিও নয়।
ডেনিস উইলিয়ামসন

4
এই উত্তরটি আরও উন্নয়নের দাবিদার। ইউরানডম, পিডজেন, জিপিডাব্লু, ইত্যাদি আপনার সিস্টেমে উপলভ্য বা নাও থাকতে পারে; এছাড়াও বিভিন্ন পরিবেশে, এমন একটি নীতি যা অন্যের সাথে কাজ করে। ওপেনসেল না রাখলে এটি একটি দুর্দান্ত অকার্যকর সেটআপ হবে। আরও ভাল: ওপেনসেল র‌্যান্ড-বেস 64 | tr -d / = + | | কাট-সি -16 এটি আপনাকে 32 চর বিয়োগ বিহীন-আলফানাম দেবে এবং 16 চর দৈর্ঘ্যের ছাঁটাবে। প্রশাসক হিসাবে মোকাবেলা করা সহজ করে তোলে। ব্যবহারকারীদের কেবলমাত্র আলফানাম রয়েছে (যার তারা প্রশংসা করেন)। দৈর্ঘ্য এত দীর্ঘ যে বিশেষ অক্ষর অপসারণ এনট্রপিকে অত্যধিক প্রভাবিত করে না। সোনালী.
zentechinc

18

এখানে কিভাবে, আমি এটা করি। এটি 10 ​​টি অক্ষর এলোমেলো স্ট্রিং উত্পন্ন করে। আপনি অন্যান্য স্ট্রিং প্রসেসিং সরঞ্জামগুলির সাথে "ভাঁজ" প্রতিস্থাপন করে এটি অপ্টিমাইজ করতে পারেন।

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1

1
+1 এই উত্তরটি POSIXly সঠিক, /dev/urandomঅবশ্যই ব্যবহারের বিয়োগ
হ্যারল্ড ফিশার

12

আমি ব্যবহার করি প্রতিটি বিতরণে নির্মিত স্ট্যান্ডার্ড লিনাক্স সরঞ্জামগুলির সাথে সর্বাধিক এনট্রপি সহ পাসওয়ার্ড তৈরি করতে:

< /dev/urandom tr -cd "[:print:]" | head -c 32; echo

এটি ASCII মুদ্রণযোগ্য সমস্ত অক্ষরকে আউটপুট করে - 32 (স্পেস) থেকে 126 (টিলডে ~) থেকে। পাসওয়ার্ডের দৈর্ঘ্য headএর -cপতাকা সহ নিয়ন্ত্রণ করা যায় । এছাড়াও অন্যান্য সম্ভাব্য অক্ষর সেট রয়েছে tr(স্থানটি অন্তর্ভুক্ত না করার জন্য, কেবলমাত্র 33-126 অক্ষর ব্যবহার করুন [:graph:])।


1
কীভাবে এটি বিদ্যমান উত্তরগুলির চেয়ে পৃথক? বিশেষত, হারবার্টের মনে আসে।
ফক্স

3
@ ফক্স তাঁর সমাধানটিতে অক্ষরের হার্ডকোডযুক্ত তালিকা ব্যবহার করা হয়েছে যা কোড পাঠযোগ্যতা, সংক্ষিপ্ততা এবং পরিষ্কার-পরিচ্ছন্নতার কারণে উত্সাহিত প্রোগ্রামিং অনুশীলন নয়। এছাড়াও কিছু বিশেষ প্রিন্টযোগ্য এএসসিআইআই অক্ষর বাশ দ্বারা ব্যাখ্যা করা যেতে পারে, তার একটি লাইনারের সর্বাধিক সুস্পষ্ট অপূর্ণতা উল্লেখ না করা - যদি সর্বাধিক এনট্রপি চাওয়া হয়, তবে কী নিশ্চিত যে উপলব্ধ অক্ষরের সমস্তটি তালিকায় অন্তর্ভুক্ত রয়েছে? এবং এমন কোনও নকল নেই যা সম্ভবত টিআর এর আচরণকে পরিবর্তন করতে পারে? আপনি যেহেতু জিজ্ঞাসা করেছেন তার উত্তরটি আমার দ্বারা প্রতিস্থাপন করা উচিত :)
ড্র করে

2
বেশিরভাগ ওয়েব সাইটগুলিতে পাসওয়ার্ডে থাকা অক্ষরগুলির উপর বিধিনিষেধ নেই, তাই হার্ড-কোডিং '[: মুদ্রণ:]' ওডাব্লুএএসপি পাসওয়ার্ডের বিশেষ অক্ষরের তালিকাকে হার্ড-কোডিংয়ের চেয়ে ভাল কিছু মনে করে না। আমি অনুভব করি যে এখানে প্রায় প্রতিটি উত্তর একটি ভেরিয়েবল ব্যবহার করে উন্নত করা যেতে পারে তবে এটি এমন একটি ছোটখাটো পরিবর্তন যে আমি কেবল একটি সম্পাদনা করার পরামর্শ দিই
ফক্স

1
< /dev/urandom tr -cd '[:graph:]'| tr -d '\\' | head -c 32; echoযদি আপনি চান না` characters in generated string.
mzzzzb

< /dev/urandom tr -cd "[:print:]" | tr -d ' \\/\`\|' | head -c 32; echoবাদ দেওয়া | \ / `এবং স্থান
রায়ান ক্রেজ

9

আপনি চান এলোমেলো স্তরের উপর নির্ভর করে আপনি কেবল বাশের (এছাড়াও zshএবং kshসম্ভবত অন্যদের) বিল্টিন $RANDOMভেরিয়েবলের সাথে যেতে পারেন:

$ echo $RANDOM | tr '[0-9]' '[a-z]'
bfeci
$ echo $RANDOM | tr '[0-9]' '[a-z]'
cijjj

সরাসরি পড়ার পদ্ধতিগুলি /dev/urandomখুব সহজ, তবে সমাপ্তির স্বার্থে আপনি এটি ব্যবহার করতে পারেন $RANDOM:

echo $(for((i=1;i<=13;i++)); do printf '%s' "${RANDOM:0:1}"; done) | tr '[0-9]' '[a-z]'

গুরুত্বপূর্ণ : এই সমাধানটি বর্ণমালার প্রথম 10 টি অক্ষর ব্যবহার করে কেবল এলোমেলো স্ট্রিং তৈরি করবে। আপনার পক্ষে এটি যথেষ্ট কিনা তা নির্ভর করে আপনার কী প্রয়োজন এটির উপর।


উত্পন্ন স্ট্রিংয়ের দৈর্ঘ্য আপনি কীভাবে নিয়ন্ত্রণ করবেন?
ল্যান্ড্রোনি

@ল্যান্ড্রোনি আমি মনে করি না আপনি সঠিক দৈর্ঘ্য না পাওয়া পর্যন্ত আপনি কোনও লুপ ব্যবহার করতে পারেন। $RANDOM0 এবং 32767 এর মধ্যে একটি সংখ্যা মুদ্রণ করবে
টেরডন

আমি প্রায় 20 বার কমান্ড চালানোর চেষ্টা করেছি এবং আমি 4-5 অক্ষরের চেয়ে বেশি কিছু আর কখনই পেতে পারি না ...
ল্যান্ড্রোনি

2
@ল্যান্ড্রোনি ধন্যবাদ, আমি দৈর্ঘ্য নির্দিষ্ট করার জন্য একটি উপায় যুক্ত করেছি তবে এটি খুব ভাল নয়। আমি rand=$(head -c 100 /dev/urandom | tr -dc A-Za-z0-9 | head -c13)পরিবর্তে এর মতো কিছু ব্যবহার করব।
টেরডন

1
@ স্কাইপাইল গ্র্যান্ডগোউর খুব ভাল বিষয়। আমি উত্তরে এটি যুক্ত করেছি, ধন্যবাদ।
টেরডন

8

পাবলো রিপেটো দ্বারা অনুপ্রাণিত হয়ে আমি সমাধানের সহজ সমাধানটি মনে করে শেষ করেছি :

shuf -zer -n20  {A..Z} {a..z} {0..9}

-z মাল্টি লাইন আউটপুট এড়িয়ে চলে

- ফলাফলটি প্রতিধ্বনি করুন

-আর যে কোনও চরিত্রকে একাধিকবার প্রদর্শিত হতে দেয়

20 অক্ষরের দৈর্ঘ্য সহ -n20 এলোমেলো স্ট্রিং

{A..Z} {a..z} {0..9} অনুমোদিত চার ক্লাস

shuf লিনাক্স কোরিউটিলগুলির অংশ এবং ব্যাপকভাবে উপলব্ধ বা কমপক্ষে পোর্ট করা হয়েছে।


5

কীভাবে সর্বাধিক 100 বাইট /dev/urandomব্যবহার করা যায় তা সম্পর্কে উত্তর ব্র্যান্ডিন একটি মন্তব্যে ব্যাখ্যা করেছিলেন head -c 100। এটি করার আরেকটি উপায় হ'ল dd:

tr -dc A-Za-z0-9 < /dev/urandom | dd bs=100 count=1 2>/dev/null

2>/dev/nullশেষে ddকমান্ড দমন করতে আউটপুট "... মধ্যে / ... রেকর্ড আউট রেকর্ড" হয়।

আমি এই দুটি পদ্ধতির মধ্যে কোনও যথেষ্ট সুবিধা / অসুবিধাগুলি সম্পর্কে অবগত নই।

trইনপুট সম্পর্কে অভিযোগ করার দুটি পদ্ধতিতে আমার একটি সমস্যা ছিল । আমি ভেবেছিলাম এটি কারণ কারণ এটি বাইনারি ইনপুট গ্রহণ করতে পছন্দ করে না এবং তাই এর /dev/randomসাথে প্রথম ফিল্টারিংয়ের পরামর্শ দিয়েছিল iconv -c -t US। তবে গিলস একটি পৃথক রোগ নির্ণয় এবং সমাধানের পরামর্শ দিয়েছেন, যা আমার পক্ষে কাজ করে:

LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | dd bs=100 count=1 2>/dev/null

কোনও কারণে iconvসমাধানটি একটি সিপিইউ
কোরকে সর্বাধিক করে তোলে

আমার উবুন্টুতে 14.04 সিস্টেম আইকনভিভ ২.৯৯ সরবরাহ করেছে libc-bin। আমি নিশ্চিত নই যদি এটি একই iconv আছে ...
landroni

trবাইনারি ইনপুট সমর্থন করে। তবে এর মতো একটি পরিসীমা A-Zলোকাল সেটিংস দ্বারা প্রভাবিত হতে পারে। চেষ্টা করুনLC_ALL=C tr …
গিলস

1
@ গিলস পসিক্স অনুমান অনুসারে এটি "বাইনারি ইনপুট সমর্থন করে না"। কেবল জিএনইউই কাজ trকরে কারণ এটি মোটেও মাল্টিবাইট সমর্থন করে না (উদাহরণস্বরূপ গতবার যাচাই করেছিলাম চেঞ্জিং কেসটি প্রতিটি বাইটের ষষ্ঠ বিট সেট করেই বাস্তবায়িত হয়েছিল)। অন্যান্য সিস্টেমগুলি (যেমন বিএসডি) মাল্টিবাইট সমর্থন করে এবং এটি সেখানে ব্যর্থ হবে যেহেতু একটি এলোমেলো ইনপুট স্ট্রিমটিও একটি বৈধ মাল্টিবাইট প্রবাহ বেশিরভাগ এনকোডিংগুলিতে খুব ছোট small জিএনইউ যে কোনও মুহুর্তে মাল্টিবাইট সমর্থন যুক্ত করতে পারে , যে সময়ে এটি ব্যর্থ হবে। অবশ্যই, সেটিংস LC_ALL=Cএটি ঠিক করবে।
মার্টিন টর্নোইজ

@ কারপেটস্মোকার পসিক্সকে trবাইনারি ইনপুট প্রক্রিয়া করতে প্রয়োজন (সি লোকালে )। (ঠিক আছে, ঠিক আছে, এটি কেবল স্পষ্টভাবে বলেছে যে নাল বাইটগুলি সমর্থন করা উচিত, এটি এমনটি বলে না যে নতুন লাইনের চরিত্রের সাথে শেষ না হওয়া খালি ফাইলগুলি সমর্থন করা উচিত, তবে বাস্তবে এটি সর্বদা ক্ষেত্রেও রয়েছে))
গিলস

4

APG কিছু লিনাক্স বিতরণে ডিফল্টরূপে অন্তর্ভুক্ত করা হয়।

স্পেশাল, নিউমারিক, ক্যাপিটাল এবং লোয়ার সাবটাইটে 5 থেকে 10 মাপের পাসওয়ার্ড তৈরি করতে কমান্ডটি হ'ল:

apg -MSNCL -m 5 -x 10

এবং ফিরে

@OpVeyhym9
3:Glul
3DroomIc?
hed&Os0
NefIj%Ob3
35Quok}

মন্তব্য হিসাবে @landroni দ্বারা বলা হয়েছে।


1
এখানে প্রচুর বিশেষ apg -a1 -m14
নিউহাউস

3

আপনি md5এই সরঞ্জামগুলির মধ্যে একটি ব্যবহার করতে পারেন যা সঠিকভাবে এই উদ্দেশ্যে। সম্পূর্ণ র্যান্ডম পাসওয়ার্ড তৈরির ক্ষেত্রে আপনি এটি ব্যবহার করতে পারেন md5pass। এটি ব্যবহার করার একটি খুব সাধারণ সরঞ্জাম এবং খুব সহায়ক, যেহেতু আপনি একই পাসওয়ার্ডটি ঝাপ-বিট নির্মাণের জন্য "লবণের" সাথে "সাধারণ পাঠ্য" ব্যবহার করতে পারেন যা আপনি পরে পুনরুদ্ধার করতে পারেন, অথবা বিকল্পভাবে আপনি সম্পূর্ণরূপে পেতে চাইবেন র্যান্ডম পাসওয়ার্ড সব সময়। সাধারণ ব্যবহার হ'ল:

md5pass [password] [salt]

যেখানে passwordএকটি নির্বাচিত শব্দ যা এলোমেলো স্ট্রিং তৈরির জন্য ব্যবহৃত হবে এবং saltএটি ব্যবহার করতে বাইটে লাফানো। এটার মত:

md5pass word

$1$.MUittVW$j.XDTF1QRnxqFdXRUiSLs0

এটি আপনার ব্যবহারের জন্য "একটি এলোমেলো ক্রম" পাসওয়ার্ড তৈরি করবে। আপনি যদি না ব্যবহার করেন saltতবে আপনি পরে একই স্ট্রিংটি পুনরায় তৈরি করতে পারবেন না।

তবে আপনি যদি এর saltমতো ব্যবহার করেন :

md5pass word 512

$1$512$.0jcLPQ83jgszaPT8xzds0

তারপরে আপনি একটি সিকোয়েন্স তৈরি করতে পারেন যা আপনি একই লবণের সাথে মিলিতভাবে শব্দটি ব্যবহার করে (বা লাফিয়ে) যদি এটির সংজ্ঞা দেওয়া হয় তবে আপনি পুনরুদ্ধার করতে পারেন।


যখন কোনও saltব্যবহার করা হচ্ছে, এটি পাসওয়ার্ডমেকার পদ্ধতির অনুরূপ ...
ল্যান্ড্রোনি

- হ্যাঁ, আপনি একজন নির্মাতকের পাসওয়ার্ডের মতোই শব্দটি দেখতে পাচ্ছেন, তবে পার্থক্যটি এটি কোনও বাণিজ্যিক প্রোগ্রাম বা কিছু নয়, কারণ এখানে এমডি 5 সরঞ্জামগুলির সেট, "এমডি 5 পাস, এমডি 5সাম, এমডি 5সাম.টেক্সটিলস" সম্পর্কিত এবং এটি সিস্টেম উপলব্ধ রয়েছে are বিনা ব্যয়ে কিছু !!!
জোকস সিনিয়র ঠিক আছে

আমার আসলে মনে ছিল পাসওয়ার্ডমেকার , এটি ওপেন সোর্স এবং অ-বাণিজ্যিক।
ল্যান্ড্রোনি

3

xxdদৈর্ঘ্য নির্দিষ্ট করার জন্য কমান্ডটি ব্যবহার করুন (-l মাধ্যমে) যা লিনাক্স এবং ওএস উভয় ক্ষেত্রেই কাজ করে। https://www.howtoforge.com/linux-xxd-command/

xxd -l16 -ps /dev/urandom

2

এই দুটি কমান্ড যথাক্রমে এলোমেলো পাসওয়ার্ড এবং পাসফ্রেজ তৈরি করে।

shuf --random-source=/dev/urandom --repeat --head-count=20 file_with_characters | tr --delete '\n'

shuf --random-source=/dev/urandom --repeat --head-count=7 file_with_words | tr '\n' ' '

পাসওয়ার্ড জেনারেটরের জন্য আপনার পাসওয়ার্ডটি ব্যবহার করতে চান এমন সমস্ত অক্ষর, প্রতি লাইনে একটি অক্ষর এবং প্রতিটি একবারে এক বারের জন্য একটি ফাইল_বিট_চ্যাকার্টার প্রয়োজন। ফাইলটিতে অবশ্যই ফাঁকা লাইন থাকা উচিত নয় এবং লাইনগুলি অবশ্যই নিউলাইন-টার্মিনেট হওয়া উচিত।

পাসফ্রেজ জেনারেটরের জন্য আপনি পাসফ্রেজটি ব্যবহার করতে চান এমন সমস্ত শব্দ, প্রতি লাইনে একটি শব্দ এবং প্রতিটি সময় এক বারের জন্য একটি ফাইল_ওয়াইড_ওয়ার্ড প্রয়োজন। ফাইলটিতে অবশ্যই ফাঁকা লাইন থাকা উচিত নয় এবং লাইনগুলি অবশ্যই নিউলাইন-টার্মিনেট হওয়া উচিত।

- হেড-কাউন্ট বিকল্পটি পাসওয়ার্ডের দৈর্ঘ্য - অক্ষরে - বা পাসফ্রেজ - শব্দগুলিতে নির্দিষ্ট করে।


1

আমি খুঁজে পেয়েছি যে ম্যাকোস-এ ট্রায়ার করার জন্য পাইপ / দেব / ইউরানডম কাজ করে না। এখানে অন্য উপায়:

set="abcdefghijklmonpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
n=6
rand=""
for i in `seq 1 $n`; do
    char=${set:$RANDOM % ${#set}:1}
    rand+=$char
done
echo $rand

আমার উত্তরের শেষ উদাহরণটি পরীক্ষা করে দেখুন। এটি ট্র ব্যবহার করে না। unix.stackexchange.com/a/494931/203075
জিব্রি

1

আমি ব্যবহার করি:

base64 < /dev/urandom | tr -d 'O0Il1+\' | head -c 44

এটি আমাকে 57 টি সম্ভাব্য অক্ষর দেয়। স্ট্রিং কপি-পেস্ট করা যাবে (মুছে +এবং \) অথবা মুদ্রিত এবং অক্ষর পার্থক্য (কঠিন হিসাবে retyped I1lO0) সরানো হয়েছে।

  • 44 টি অক্ষর আমাকে দেয়: লগ 2 (57 44 )> এন্ট্রপির 256.64 বিট
  • 22 টি অক্ষর আমাকে দেয়: লগ 2 (57 22 )> এন্ট্রপির 128.32 বিট

আমি এটি পছন্দ করি কারণ:

  • কমান্ডটি টাইপ করা সহজ এবং স্মরণীয়
  • এটি স্ট্যান্ডার্ড সিস্টেম সরঞ্জাম ব্যবহার করে - অতিরিক্ত বাইনারি নেই
  • "এলোমেলো" বেশি এলোমেলোভাবে ব্যবহার করে না (89% র্যান্ডম বিট এটি ব্যবহার করে vs 24% বনাম tr 24% সরাসরি টিআর থেকে পাইপ করার সমাধানের জন্য ব্যবহার করে)
  • 22 এবং 44 টি অক্ষরের জুড়ি বেশ সুন্দরভাবে (ঠিক উপরে উপরে) দুটি ব্রেকপয়েন্টের সাধারণ শক্তি
  • আউটপুট সহজেই নির্বাচন করা যায় এবং আটকানো বা মুদ্রিত করা যায় এবং ন্যূনতম মানব ত্রুটির হারের সাথে পুনরায় টাইপ করা যায়
  • হেক্সের চেয়ে কম এনকোড করা (22 এবং 44 এর পরিবর্তে 32 এবং 64) এর সমাধান যেমন এমডি 5সাম / শ1সাম ইত্যাদি solutions

Https://unix.stackexchange.com/a/230676/9583 এবং বিশেষ করে আমার প্রাথমিক অনুপ্রেরণার জন্য মন্তব্যগুলিতে ক্রেডিট ।


আপনি যদি প্রয়োজন সংখ্যার / বিশেষ অক্ষর - সাধারণত একটি নম্বর, যদি না আপনি নিরাপদে সংযুক্ত করতে পারবেন হতে হবে 1এনট্রপি হ্রাস (যখন এক W / A নম্বর পেতে নতুন একটি উৎপাদিত ছাড়া করে এনট্রপি কমাতে)। আপনি !এন্ট্রপিকে হ্রাস না করে নিরাপদে একটি যুক্ত করতে পারেন । কোনও স্কিমই কোনও কিছুর জন্য এনট্রপি বাড়ায় না, তবে উত্পন্ন স্ট্রিংটিকে পুরানো পাসওয়ার্ডের প্রয়োজনীয়তার সাথে সম্মতিতে আনতে পারে।
আইরিডেইন

1

"অনেকগুলি ছোট সরঞ্জাম যা একটি জিনিস ভাল করে" এর ইউনিক্স দর্শন এই ক্ষেত্রে আপনাকে খুব ভালভাবে পরিবেশন করে।

  • /dev/urandomএলোমেলো "বাইটস" এর একটি স্ট্রিম (এতে প্রিন্টযোগ্য অক্ষর অন্তর্ভুক্ত)
  • base64 বাইট ডেটাতে এনকোড করে [A-Za-z0-9/+] (যা সম্পূর্ণ মুদ্রণযোগ্য)
  • dd আর্গুমেন্ট হিসাবে প্রদত্ত প্রয়োগকারী আউটপুট-এ অনুলিপি অনুলিপি করে (এতে ব্লকের আকার এবং ব্লক গণনা অন্তর্ভুক্ত থাকতে পারে)

ওএসএক্স

base64     < /dev/urandom | dd bs=1k count=1

লিনাক্স

base64 -w0 < /dev/urandom | dd bs=1k count=1

নোট:

  • আপনার যদি অক্ষরের একটি উপসেট দরকার হয় তবে আপনি পাইপে একটি সংশোধক সন্নিবেশ করতে পারেন।
    • উদাহরণস্বরূপ: tr -d '[A-Z/+]'বড় হাতের অক্ষরগুলি থেকে মুক্তি +এবং/
  • bsআপনার প্রয়োজনীয় দৈর্ঘ্যের জন্য আপনি (ব্লকের আকার) সেট করতে পারেন ।
  • লিনাক্সে, base64ডিফল্টরূপে umns 76 কলামগুলিতে মোড়ানো হয় এবং এটি না চাইলে অবশ্যই পুনরায় সেট করতে হবে -w0

1

আমি একটি পাসওয়ার্ড তৈরি করতে আমার স্বাভাবিক কমান্ডটি অবদান রাখতে চাই

$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' |cut -c -13
b0R55751vWW9V

পাসওয়ার্ডের দৈর্ঘ্যটি কনফিগার করতে, কাট কমান্ডের নম্বরটি আপনার প্রয়োজনীয় দৈর্ঘ্যে পরিবর্তন করুন, উদাহরণস্বরূপ, 24 অক্ষর

$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' |cut -c -24
WFBhVHuKbrnRhd5kdWXPzmZG

বিভ্রান্তিকর 0 বা O, 1 বা l চান না? এটি অন্য দিয়ে ফিল্টারtr

$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' | tr -d '0O1l'|cut -c -24
JuCphwvhrhppD9wVqfpP2beG

আমি ব্যক্তিগতভাবে কখনই পাসওয়ার্ডে বিশেষ চরিত্র পছন্দ করি না, এজন্য আমি কেবল [:alnum:]আমার পাসওয়ার্ড জেনারেটরের জন্যই বেছে নিই


0

আমি secpwgenআলপাইন লিনাক্সে রক্ষণাবেক্ষণ করি এবং উত্সগুলি আমার গিথুবগুলিতে রাখি

এটি এলোমেলো স্ট্রিং বা ডাইসওয়্যার বাক্যাংশ তৈরি করতে পারে:

musl64 [~]$ secpwgen
USAGE: secpwgen <-p[e] | -A[adhsy] | -r | -s[e]> N

PASSPHRASE of N words from Diceware dictionary
  -p    generate passphrase
  -pe   generate enhanced (with symbols) passphrase

SKEY PASSWORD of N words from S/Key dictionary
  -s    generate passphrase
  -se   generate enhanced (with symbols) passphrase

ASCII RANDOM of N elements (at least one option MUST be present)
  -A    Each letter adds the following random elements in output:
    a    alphanumeric characters
    d    decimal digits
    h    hexadecimal digits
    s    special characters
    y    3-4 letter syllables

RAW RANDOM
  -r    output BASE64 encoded string of N random BITS
  -k    output koremutake encoding of N random BITS

13 টি অক্ষরের এলোমেলো স্ট্রিং উত্পন্ন করতে আপনি ব্যবহার করবেন:

musl64 [~]$ secpwgen -Aas 13
----------------
WK5#*V<]M3<CU ;ENTROPY=67.21 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

musl64 [~]$ secpwgen -Aa 13
----------------
GP0FIEBM9Y3BT ;ENTROPY=67.21 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

ব্যবহারকারীদের একটি পাসওয়ার্ড মনে রাখার জন্য ডাইসওয়্যার বাক্যাংশগুলি ব্যবহার করুন:

musl64 [~]$ secpwgen -p 5
----------------
wq seen list n8 kerr  ;ENTROPY=65.00 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

আমি ব্যক্তিগতভাবে পছন্দ করি:

musl64 [~]$ secpwgen -r 512
----------------
h62lL7G4gwh3/j9c7YteQvVXoqJrQKKPWVR3Lt7az36DcfWZWtUgBT19iwmJBwP4UahNzPe7qYD7OcklUFpCzQ== ;ENTROPY=512.00 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

0

খুব সুরক্ষিত পাসওয়ার্ডের জন্য আমার উপায় (যেখানে 16 পিডব্লু দৈর্ঘ্য):

cat /dev/urandom | tr -cd [:graph:]|head -c 16

উদাহরণ ফলাফল:

jT@s_Nx]gH<wL~W}

বা বিকল্পভাবে, একাধিক পাসওয়ার্ড তৈরি করতে:

বিড়াল / দেব / ইউরানডম | tr-cd [: গ্রাফ:] | ভাঁজ -w 16 | মাথা -6

উদাহরণ ফলাফল:

7ck%G7'|f&}_8(]s
<?*]E.CG[NB'gK#A
:tF-WPTOa3!i7S(h
2xy(>=%3=Kb1B$`6
*98Lf{d?Jzb}6q1\
E7uCEAN2Hz]]y|5*

সামান্য কম সুরক্ষিত (ছোট চরিত্র সেট):

cat /dev/urandom |base64 -w 0|fold -w 16|head -6

উদাহরণ ফলাফল:

rJqYxYZLOTV+A45w
PUKQ+BoBf6yfZw5m
+LRfpsN9CsLRiN8V
yMS6zDpL6NHmG17s
yTUWPG7Rum97schi
cognvjVwaKaAyPRK

-1

একটি সহজ সহজ এবং সহজ (সম্ভবত আপনি যা খুঁজছেন তার চেয়ে আরও সহজ) এই উপায়টি অর্জনের উপায় হ'ল একটি নির্দিষ্ট পরিসরে একটি এলোমেলো সংখ্যা তৈরি করা, সেই নম্বরটিকে তার সমতুল্য ASCII অক্ষরে রূপান্তর করা এবং একটি স্ট্রিংয়ের শেষে যুক্ত করা to ।

পাইথনের একটি প্রাথমিক উদাহরণ এখানে:

import random # import random library  
passFile = open("passwords.txt", 'w') # create file passwords.txt
passNum = int(input("Number of passwords: ")) # get number of  passwords
passLength = int(input("Password length: ")) # get length of passwords  
for i in range(passNum):
    password = "" # reset password
    for i in range(passLength):
        num = random.randint(65, 122) # get random number
        while num in range(91, 97): # Don't include punctuation
            num = random.randint(65, 122)
        password += chr(num) # add character to current password 
    passFile.write(password + "\n") # add current password to file  
passFile.close() # close file

সম্পাদনা: একাধিক পাসওয়ার্ড তৈরি করতে এবং একটি ফাইলে তাদের লিখতে মন্তব্য যুক্ত করেছে এবং কোড যুক্ত করেছে


3
পাইথনের শক্তি যদি দেওয়া হয় তবে আমি এটি এই ফ্যাশনে করব না। পাসওয়ার্ডের জন্য বৈধ সমস্ত অক্ষরযুক্ত স্ট্রিংয়ে যোগ যোগ করা এবং অক্ষরগুলি নির্বাচন করার জন্য এলোমেলোভাবে ব্যবহার করা অনেক সহজ হবে।
মাইক ম্যাকমাহন

ভালো মত পাইথন ব্যবহার করতে code.activestate.com/recipes/578468-password-generator-mkpasswd
Grijesh চৌহান

-2

আমি এই আদেশ চাই:

date +%s | sha256sum | base64 | head -c 12

1
আমি বরং আরও এলোমেলো ন্যানোসেকেন্ডস পদ্ধতির ব্যবহার করব: date +%N যেহেতু আপনি যদি কোনও স্ক্রিপ্টে অনেক ব্যবহারকারী এবং পাসওয়ার্ড তৈরি করেন, সেকেন্ডগুলি অনেকের জন্য এমনকি সমস্ত তারিখের কমান্ডের জন্য একই হয়ে উঠতে পারে, ফলে অভিন্ন পাসওয়ার্ড তৈরি হয়।
জন মেয়র

1
@JohnMayor: এই পদ্ধতির আরো জোরালো হল: dd if=/dev/random bs=512 count=1?
ইউজেন কনকভ

8
এই উত্তরগুলি অত্যন্ত বিপজ্জনক! আপনি একটি পরিচিত বীজ থেকে পাসওয়ার্ড তৈরি করেছেন যা পূর্বাভাস দেওয়া সহজ। আমি গত বছরের এই পদ্ধতিটি ব্যবহার করে উত্পন্ন সমস্ত পাসওয়ার্ড উত্পন্ন করতে এবং জোরপূর্বক বাধ্যতামূলক উদ্দেশ্যে এই তালিকাটি ব্যবহার করতে পারি।
ফ্লো

-4

আমি http://passwordsgenerator.net/ এ যাই, এটি 2048 অক্ষর পর্যন্ত এলোমেলো অক্ষরের স্ট্রিং তৈরি করতে, উপরের কেস, লোয়ার কেস, 0 থেকে 9 সংখ্যা, বিরাম চিহ্নগুলি বা কোনও সংমিশ্রণ নির্বাচন করে allows


2
আমি এটিকে স্পষ্ট করে তুলতে প্রশ্নটি স্পষ্ট করে দিয়েছি যে অফ-লাইন উত্পন্ন স্ট্রিংগুলি পছন্দনীয়। সরাসরি কোনও ওয়েবসাইটে পাসওয়ার্ড তৈরি করা, বিশেষত সংযোগটি HTTPS না হলে (আপনার উত্তর হিসাবে) সুরক্ষিত নয়।
ল্যান্ড্রোনি

1
ইন্টারনেট থেকে এলোমেলো পাসওয়ার্ড পাওয়া দর্শনীয়ভাবে বোকা এবং নিষ্পাপ। আপনি এখন কোনও পরিষেবা বা সাইটের জন্য ব্যবহার করছেন এমন একটি পাসওয়ার্ড এবং আপনার সম্পর্কে অনন্য ব্যক্তিগত বিবরণ (আইপি ঠিকানা, ব্রাউজার / পরিবেশের তথ্য) জানেন Someone এই সাইটটি এখন আপনার সম্পর্কে সংগৃহীত অন্যান্য ডেটা সহ তথ্যকে ক্রস-রেফারেন্স করতে পারে। উদাহরণস্বরূপ, আপনি একবার মেলিং তালিকায় পোস্ট করেছেন, আপনার আইপি ঠিকানাটি মেলের শিরোনামে রয়েছে, সুতরাং এখন আমাদের কাছে একটি পাসওয়ার্ড, নাম এবং একটি ইমেল ঠিকানা রয়েছে ... আপনি এখানে আপনার পাসওয়ার্ড সহ সত্যিই এলোমেলো অপরিচিত ব্যক্তিকে বিশ্বাস করছেন।
মার্টিন টর্নোইজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.