এক্সকেসিডি পাসওয়ার্ড জেনারেটর


34

ভূমিকা

স্পষ্টতই, এই প্রশ্নটি এখানে জিজ্ঞাসা করা হয়েছে এবং দুর্ভাগ্যক্রমে এটি বন্ধ হয়ে গেছে। আমি ভেবেছিলাম এটি দিয়ে আবার চেষ্টা করা ভাল ধারণা, তবে সঠিকভাবে সম্পন্ন হয়েছে।

এটি নিরাপদ বলে ভেবে আমাদের কীভাবে "পাসওয়ার্ডগুলি মনে রাখার জন্য হার্ড" ব্যবহারের প্রশিক্ষণ দেওয়া হয়েছে তা এক্স কেসিডি দেখায়, পরিবর্তে কম্পিউটারটি ক্র্যাক করতে 3 দিন সময় নেয়। ফ্লিপ দিকে, 4-5 টি শব্দ মনে রাখা কুয়ান এর পাসওয়ার্ড ইন্ট্রপি নিয়ে আসে এবং এটি মনে রাখা সহজ। পাগল কিভাবে যে কাজ করে, হাহ?

চ্যালেঞ্জ

আজকের কাজটি হ'ল শব্দ ব্যবহার করে 5 টি পাসওয়ার্ড তৈরি করা। পাসওয়ার্ডে 4 টি শব্দ এবং প্রতি শব্দে সর্বনিম্ন 4 টি বর্ণ, তবে সর্বোচ্চ নয়। কুয়ান এর পাসওয়ার্ড ইন্ট্রপি প্রতিটি পাসওয়ার্ডের জন্য গণনা করা দরকার, তবে বাধ্যতামূলক ন্যূনতম সেট করা হবে না।

কুয়ান এর পাসওয়ার্ড ইন্ট্রপি কী?

কুয়ান এর মতে পাসওয়ার্ড কতটা অপ্রত্যাশিত তার পরিমাপ কুয়ান এর পাসওয়ার্ড ইন্ট্রপি। একটি সাধারণ গণনা রয়েছে: E = লগ 2 (আর) * এল । ই হচ্ছে কুয়ান-এর পাসওয়ার্ড ইন্ট্রপি, আর-র অক্ষরের পরিসর এবং পাসওয়ার্ডের দৈর্ঘ্যের জন্য এল L

উপলব্ধ অক্ষরের ব্যাপ্তি স্ব-বর্ণনামূলক। এটি পাসওয়ার্ডের অক্ষরের পরিসর যা এই ক্ষেত্রে উচ্চ এবং নিম্নতর ক্ষেত্রে। যেহেতু বর্ণমালায় 26 টি অক্ষর রয়েছে তাই পাসওয়ার্ডের পুরো পরিসরে 26 x 2 = 52 অক্ষর রয়েছে।

পাসওয়ার্ড দৈর্ঘ্য স্ব বিবৃতিমূলক। এটি তৈরির পরে পাসওয়ার্ডের মোট দৈর্ঘ্য।

সীমাবদ্ধতাসমূহ

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

আউটপুট

TriedScarProgressPopulation 153.9
TryingPastOnesPutting 119.7
YearnGasesDeerGiven 108.3
DoubtFeetSomebodyCreature 142.5
LiquidSureDreamCatch 114.0

16
পরীক্ষার ক্ষেত্রে, পাসওয়ার্ড এনট্রপি কেন আলাদা হয়? একই অভিধান থেকে উত্পন্ন সমস্ত 4 শব্দের পাসওয়ার্ডের একই এনট্রপি থাকা উচিত।
ননলাইনফর্ট ফল

20
পাসওয়ার্ড এনট্রপি প্রতীক সেট উপর নির্ভর করে। যদি আপনার পাসওয়ার্ডটি Nসেট থেকে প্রতীক হয় Sতবে পাসওয়ার্ড এনট্রপি log2(|S|)*N। এখানে চিহ্নের আকারটি অভিধানের আকার ( |S|=4284) এবং চিহ্নগুলির সংখ্যা শব্দের সংখ্যা ( N=4), সুতরাং প্রতিটি পাসওয়ার্ডের এনট্রপি হয় 48.3
ননলাইনারফ্রুট

48
এন্ট্রপির এই সংজ্ঞাটি বিপজ্জনকভাবে ভুল! আকারের একটি সেট থেকে প্রতিটি অক্ষর এলোমেলোভাবে বেছে নেওয়া হয়, তবে প্রকৃতপক্ষে একটি দৈর্ঘ্য-এল পাসওয়ার্ডটিতে R ^ L সম্ভাবনা রয়েছে, সুতরাং এনট্রপিটি হ'ল লগ: লগ (আর ^ এল) = লগ (আর) * এল যা আপনার সূত্র তবে, যদি পাসওয়ার্ডগুলি অন্য কোনও সেট থেকে এলোমেলোভাবে বেছে নেওয়া হয় (যেমন আপনার কোনও পাসওয়ার্ড কখনও আসবে না 3t1ta#asd), তবে এন্ট্রপিটি সম্ভব পাসওয়ার্ডের সংখ্যার লগারিদম হবে। যদি আপনি সর্বদা একটি 4284-শব্দের অভিধান থেকে এলোমেলোভাবে 4 টি শব্দ চয়ন করেন, তবে সেখানে 4284 ^ 4 পাসওয়ার্ড রয়েছে, প্রতিটি এনট্রপি লগ (4284) * 4 ≈ 48.26 সহ।
শ্রীভাতসারআর

5
রেকর্ডের জন্য, এই জাতীয় পাসওয়ার্ডগুলি এক্সকেসিডি কমিকের পূর্বাভাস দেয়। তাদের "ডাইসওয়্যার" পাসওয়ার্ড বলা হয়।
ব্যবহারকারী 2428118

5
এলোমেলো অক্ষরের চেয়ে কম এনট্রপি থাকার শব্দের বিষয়টিকে বাদ দিয়ে, আপনার প্রশ্নের প্রয়োজনবোধক শব্দকে মূলধন করা উচিত, যার অর্থ কেসটি স্থির হয়েছে এবং এন্ট্রপির জন্য গণনা করা যায় না।
নাইট দ্য ডার্ক অ্যাবসোল

উত্তর:


13

পাইথন 2, 102 101 97 91 বাইট

from random import*
exec"x=''.join(x.title()for x in sample(f,4));print(x,57*len(x)/10);"*5

নামের একটি তালিকা হিসাবে অভিধান ধরে f

ফাইলটি যেমন dict.txtকল করে এবং সেভ করে পরীক্ষা করা যায়

f = open('dict.txt').readlines()

পাইথন তালিকাগুলিতে বদলানো পদ্ধতি নেই, এবং আপনি পাইথন 2 এ চারপাশে প্রথম বন্ধনগুলি সরিয়ে দুটি বাইট সংরক্ষণ করতে পারেন exec( execপাইথন 2 তে একটি কীওয়ার্ড)।
কনরাড বোরোস্কি

@ এক্সফিক্স হ্যাঁ এটি হওয়া উচিত shuffle(f);
জোনাথন অ্যালান

ওহো, সেই
আশাকে

4
আপনি অনুমান করার আমার কৌশলটি ব্যবহার করতে পারেন যে ভাসমান পয়েন্টের ত্রুটিগুলি চালু না করা এবং five 57*len(x)/10.. at টায় রাউন্ডিংটি 1 দশমিক স্থানে ঠিক আছে এবং এতে পাঁচটি বাইট সংরক্ষণ করা উচিত । মুদ্রণটিকে টুপল করে তুলতে পেরেসেন্টিস সরিয়ে অন্য একটি বাইট সংরক্ষণ করুন। এখানে একটি কাটা ডাউন সংস্করণ রয়েছে: টিআইও
জনাথন অ্যালান

sample(f,4)পরিবর্তে ব্যবহার করুন shuffle। এছাড়াও fশুধু হতে পারে open('dict.txt').read().split('\n'), open('dict.txt').readlines(), বা শুধু open('dict.txt')(আমি জানি এটা golfed না কিন্তু এখনও)।
অ্যালেক্স হল

10

পাওয়ারশেল (3.0+), 77 বাইট

1..5|%{($p=-join($d|random -c 4|%{culture|% te*|% tot* $_}));57*$p.Length/10}

এটি অনলাইন চেষ্টা করুন!

জোনাথন অ্যালান এর 57*len/10কৌশল ব্যবহার ।

$dঅভিধানের শব্দের একটি অ্যারে হিসাবে রয়েছে। আপনি যদি বাড়িতে খেলছেন এবং পূরণ করতে চান $d:

$d=-split(irm pastebin.com/raw/eMRSQ4u2)

(Get-Culture).TextInfo.ToTitleCase()প্রথম বর্ণটি মূলধন করতে গল্ফযুক্ত সংস্করণ ব্যবহার করা ; আমি মনে করি না পাওয়ারশেলের মধ্যে এটি করার একটি আরও ছোট উপায় আছে।

বাকিগুলি বেশ সহজবোধ্য বলে আমি মনে করি।

টিআইও লিঙ্কটিতে পুরো অভিধান রয়েছে; ক্যাশে অক্ষম করুন এবং বাদাম যান!


কেউ আমাকে "জোনাথন অ্যালান 57 * লেন / 10 ট্রিক" এর জন্য একটি রেফারেন্সে নির্দেশ করতে পারেন?
জেমস কারান

@ জেমস কররান এখানে তার উত্তরটির ভাঙ্গন দেখুন , এবং এই উত্তর সম্পর্কে তার মন্তব্যও ।
ব্রিটিশবাদী

এটি 2.0 সঠিকভাবে কাজ করবে না। এটি শিরোনামে লক্ষ করা উচিত। আমি এটিও মনে করি $dযে এটি পরিবেশে উপস্থিত রয়েছে তা ধরে নিয়েই আপনার পড়া উচিত। (gc d)| random..যেখানে অভিধানটি একই ডিরেক্টরিতে ডি নামে একটি ফাইল।
ম্যাট

1
@ ম্যাট এসও-তে আমি ভি 2 (অথবা 2 সংস্করণগুলি দিয়ে) এর সাথে একটি উত্তর কাজ করার উপায় থেকে বেরিয়ে যেতে পারি তবে এটি কোড গল্ফ ম্যান! তত তাত্ক্ষণিক তত ভাল ;
পি

1
আমি আমার উত্তর শিরোনামে বাইট সংরক্ষণ করার চেষ্টা করছি।
ম্যাট

7

জেলি , 22 বাইট

Ẋḣ4ŒtFµL×57÷⁵⁸,K
çЀ5Y

অক্ষরগুলির তালিকার একটি তালিকা গ্রহণ করে একটি মোনাডিক লিঙ্ক, পার্স করা অভিধান ( চ্যাটে অনুমতি দেওয়া হয়েছে )।

এটি অনলাইন চেষ্টা করুন! (অভিধানটি আড়াল করতে এবং স্ক্রোলের প্রয়োজনীয়তা হ্রাস করতে "যুক্তিগুলি" ক্লিক করুন))

কিভাবে?

যেহেতু অভিধানটিতে কেবল বৈধ শব্দ রয়েছে (কেবলমাত্র 4অক্ষর বা আরও বেশি [a-z]) কেবল এই শর্তটি পরীক্ষা করার দরকার নেই।

যেহেতু অভিধানে সব কথায় লেন্থ আছে [4-8]সম্ভাব্য পাসওয়ার্ড লেন্থ হয় [16,32]সম্ভব entropies হবে না বৃত্তাকার এক দশমিক জায়গা ভিন্নভাবে প্রতিস্থাপন তুলনায়, এবং log(52,2)সঙ্গে 5.7। একমাত্র সমস্যা হল একটি ফ্লোটিং পয়েন্ট মান ব্যবহার করছে 5.7ফ্লোটিং পয়েন্ট দেব লেন্থ জন্য ত্রুটি rounding 18, 26এবং 31। যাইহোক গুন 57এবং তারপর দ্বারা বিভাজক 10ব্যবহার ×57÷⁵এড়াতে এই (এখনও ব্যবহার পূর্ণ ফ্লোটিং পয়েন্ট স্পষ্টতা মান মুদ্রণ চেয়ে বাইট খাটো হচ্ছে ×52l2¤)।

çЀ5Y - Main link: list of list of characters (the parsed dictionary)
   5  - literal 5
 Ѐ   - map across the implicit range [1,2,3,4,5]:
ç     -   last link (1) as a dyad
    Y - join with newlines
      - implicit print

Ẋḣ4ŒtFµL×57÷⁵⁸,K - Link 1, get password and entropy: list of lists of characters, number
Ẋ                - shuffle the list of lists (shuffle all the words)
 ḣ4              - head to 4 (the first four words)
   Œt            - title case (make the first letter of each uppercase)
     F           - flatten into one list of characters
      µ          - monadic chain separation, call that p
       L         - length of p
         57      - 57
        ×        - multiply
            ⁵    - 10
           ÷     - divide -> entropy to 1 decimal place
             ⁸   - link's left argument, p
              ,  - pair -> [p, entropy]
               K - join with (a) space(s)

5

রুবি, 89 83 বাইট

d.select!{|w|w[3]}
5.times{p w=d.sample(4).map(&:capitalize)*'',5.700439718*w.size}

ধরে নেওয়া যায় যে পাসওয়ার্ডগুলি ভেরিয়েবলে সংরক্ষণ করা হয় d। আপনি কোডের আগে এই লাইনটি যুক্ত করতে পারেন:

d=$<.map(&:chomp)

এবং স্ক্রিপ্টটি উদাহরণস্বরূপ কল করুন:

$ ruby generate_passwords.rb < dictionary_file.txt

নমুনা আউটপুট:

"MarginStarvedOnusInsulted"
142.51099295
"KitchenMiseryLurkJoints"
131.110113514
"InducesNotablePitfallsPrecede"
165.312751822
"FarmersAbortFutileWrapper"
142.51099295
"RoutesBishopGlowFaithful"
136.81055323200002

কিচেনমিজারিলর্কজয়েন্টস ... বাহ!


আজেদি 32 থেকে -6 বাইট


1
সরিয়ে কয়েক বাইট সংরক্ষণ করতে সক্ষম হতে পারেন shuffle!এবং প্রতিস্থাপন popসঙ্গে sample
Ajedi32

@ আজেদী 32 ওহ, আপনি ঠিক বলেছেন! আমি আসলে এটি সম্পর্কে ভেবেছিলাম, তবে আমি এই নিয়মটি ভুলভাবে লিখেছি A word cannot reappear in the same password, ভেবেছিলাম এটির অর্থ সমস্ত পাসওয়ার্ডগুলিতে শব্দের পুনরুদ্ধার নয় । ধন্যবাদ :)
ডানিরো

4

গণিত, 178 বাইট

t=1;l=Length;While[t<6,s=RandomChoice[Import["https://pastebin.com/raw/eMRSQ4u2"],4];c=Capitalize/@s;f=Flatten@Characters[c];Print[StringJoin[c]," ",Log[2,l@Union@f]*l@f//N];t++]

এটি অনলাইনে চেষ্টা করুন

ctrl-v ব্যবহার করে অনুলিপি করুন এবং পেস্ট করুন এবং চালনার জন্য শিফট + এন্টার টিপুন


গণিত, 136 বাইট

এম কোডিং হ'ল ডিকশনারি ধরে নিচ্ছি

m=ImportString[Import["C:\a.txt"]]

t=1;l=Length;While[t<6,s=RandomChoice[m,4];c=Capitalize/@s;f=Flatten@Characters[c];Print[StringJoin[c]," ",Log[2,l@Union@f]*l@f//N];t++]

"আজকের কাজটি হল শব্দ ব্যবহার করে 5 টি পাসওয়ার্ড তৈরি করা" "একটিটির পরিবর্তে 5 টি দরকার Need
কুয়ানহুলিও

ঠিক আছে ... 5 টি পাসওয়ার্ড .. স্থির ..
J42161217

হাইপারলিংক পাঠ্য এড়িয়ে আপনি কেন সংক্ষিপ্তকরণের জন্য অভিধানটি স্থানীয় উপলব্ধ করলেন না?
সার্জিওল

যাতে এটির পরীক্ষা করা আপনার পক্ষে সহজ হয় ...
J42161217

আপনার জমাটি কম গল্ফ করার চেয়ে টেস্টিংয়ে স্বাচ্ছন্দ্যের জন্য সহজ, অযৌক্তিক সহায়তার কোড সরবরাহ করা সবচেয়ে ভাল যাতে এটি স্বয়ংসম্পূর্ণ থাকে। এছাড়াও, অভিধানটি স্থানীয় ডিএনএস সার্ভারকে হাইজ্যাক না করে (বা hostsফাইলটি সংশোধন করে ) পরিবর্তনশীল বলে মনে করা হচ্ছে ।
wizzwizz4

4

বাশ ,66 65 বাইট

for w in `shuf -n4 -`;{((l+=${#w}));printf ${w^};};bc<<<$l*5.7004

এটি অনলাইন চেষ্টা করুন!

অভিধানটি STDIN দ্বারা পুনরুদ্ধার করা হয়। অভিধানে সমস্ত শব্দ পরিবর্তন এবং প্রথম 4 আউটপুট।

প্রতিটি শব্দের জন্য, তার দৈর্ঘ্য ভার্ l তে যোগ করে এবং শব্দটিকে মূলধনী প্রতিধ্বনি করে। শেষ পর্যন্ত বিসি কল করুন গণিত করতে।

অজু সমাধান, 112 বাইট, চারটি পাসওয়ার্ড:

shuf -n16 -|xargs -n4|awk '{for(i=1;i<5;i++)printf toupper(substr($i,1,1))substr($i,2);print(length($0)-3)*5.7}'

3

(এটি মার্টমিস্টদের উত্তরের একটি অভিযোজন, তবে আমার কাছে মন্তব্য করার মত উত্তর নেই)

পাইথন, 88 86 বাইট

g={*f}
exec('x="".join(g.pop().title()for i in "a"*4);print(x,len(x)*5.700439718);'*5)

কীভাবে setনন-নির্ধারিত তা কাজে লাগিয়ে আপনি কোনও র্যান্ডমনেস লাইব্রেরি আমদানি করতে এড়াতে পারবেন।


এটি ধারাবাহিকভাবে আমার জন্য একই আউটপুট উত্পাদন করে। যদি এটি কিছু বাস্তবায়নে কাজ করে তবে আপনি কিছু বাইট সংরক্ষণ করে রাখতে পারেন set(f).pop()
জোনাথন অ্যালান

1
আমি সত্যিই এটি বৈধ বলে মনে করি না। এটি নির্বিচারক নয়, সুতরাং এটি একই পাসওয়ার্ড তৈরির গ্যারান্টিযুক্ত নয়, তবে বাস্তবে এটি খুব কমই বিভিন্ন ফলাফল তৈরি করবে।
ডিজেএমসিএমহেম

আমার সন্দেহ হয়েছিল এটি বাস্তবায়ন নির্ভর। আমি এটি অ্যানাকোন্ডা পাইথন 3 এর একটি নতুন ইনস্টল করা উইন্ডোজ রিলিজে করেছি এবং এটি কার্যকর হয়েছে। তবে set(f).pop()কাজ করে না, আমি চেষ্টা করেছিলাম। এটি প্রতিবার একই ফলাফল দেয়।
dain

"অনুশীলনে এটি খুব কমই আলাদা ফলাফল তৈরি করবে" - এটি আমার কাছে মনে হয়, এখানে একটি নমুনা রয়েছে: পেস্টবিন.
com

@ দিন আমি কৌতূহলী দয়া করে আপনার পাইথন বিল্ড সম্পর্কে তথ্য সরবরাহ করুন।
wizzwizz4

3

জাপট , 30 বাইট

5Ç[V=Uö4 ®g u +Zt1ìMm52 *Vl]¸

এটি অনলাইন চেষ্টা করুন!


নিস! তবে দুর্ভাগ্যক্রমে এটি 5 বার একই পাসওয়ার্ড তৈরি করে এবং এটি প্রতিবারই আলাদা হওয়া উচিত ..
আইইন ওয়ার্ড

এটি 30 টি অক্ষর হতে পারে তবে কমপক্ষে ইউটিএফ -8 এ, আমার সিস্টেম এটি 35 বাইটে আটকে রেখেছে।
একটি সিভিএন

1
@ মাইকেলKjörling জাপট ইউটিএফ -8 নয়, আইএসও 8859-1 ব্যবহার করে।
ডেনিস

@ ডেনিস আকর্ষণীয়। ধন্যবাদ.
একটি সিভিএন

3

জাভাস্ক্রিপ্ট (ES6), 164 বাইট

d=>{for(i=5;i--;)console.log(p="....".replace(/./g,_=>(w=d.splice(Math.random()*d.length|0,1)[0])[0].toUpperCase()+w.slice(1)),(Math.log2(52)*p.length).toFixed(1))}

ধরে নিই যে অভিধানটি অ্যারে হিসাবে ফাংশনটিতে পাঠানো হয়েছে।

পরীক্ষার স্নিপেট


2

গণিত, 71 বাইট

ধরে নিচ্ছি অভিধানটি ইতিমধ্যে একটি অ্যারেতে লোড হয়েছে d

Table[{#,Log[2,52]StringLength[#]}&[""<>Capitalize@d~RandomSample~4],5]

Explaination:

                                        Capitalize@d                    - Capitalize all the dictionary
                                                    ~RandomSample~4     - make an array with 4 values. By default values can not repeat.
                                    ""<>                                - Concatenate with empty string to turn array into single string.
      {#,Log[2,52]StringLength[#]}&[                               ]    - Put current string next to log(2,52) times length of current string
Table[                                                              ,5] - Repeat this 5 times.

এনট্রপি নম্বর সম্পর্কে কী ?!
জোনাথন অ্যালান

উফস্ কিছুটা মিস করল। আপডেট করা হয়েছে।
ইয়ান মিলার

2

কোল্ডফিউশন 216 বাইট

p={};z=arrayLen(c);for(x=0;x<5;x++){pw="";r={};while(structCount(r)<4){n=RandRange(1,z);r.append({"#c[n]#":true});}for(w in structKeyList(r)){pw&=REReplace(w,"\b(\w)","\u\1","All");};p.append({"#pw#":57*len(pw)/10})}

এটি কোল্ডফিউশন 11+ এবং লুসি 4.5+ তে কাজ করে

এটি চালানোর জন্য: https://trycf.com/gist/ff14e2b27d66f28ff69ab90365361b12/acf11?theme=monokai

ট্রাইসিএফ লিঙ্কটিতে কম গল্ফ-ইশ রয়েছে তবে একই কোড।

আমি সত্যিই একটি প্রতিযোগিতামূলক গল্ফ উত্তর আছে আশা করি না; আমি শুধু দেখতে চেয়েছিলাম যে কোল্ডফিউজেনে এই চ্যালেঞ্জটি শেষ করতে এটি কী গ্রহণ করবে। বিশেষত যেহেতু এই উত্তরগুলিতে খুব বেশি সিএফ নেই। :-) সেটআপের পরে এটি আমার প্রত্যাশার চেয়ে আশ্চর্যরকমভাবে খাটো ছিল।

আমার প্রথম প্রচেষ্টাটি একটু ছোট হয়েছিল যতক্ষণ না মনে পড়ে যে একই শব্দটি একাধিকবার ব্যবহার করা যায় না। যদিও এটির সম্ভাবনা খুব কম নয় যে র্যান্ডমাইজার একই সূচকটি একাধিকবার বেছে নেবে, আমি সূচকে কোনও কাঠামোর কীগুলিতে ফেলে রাখি, যা সদৃশ প্রতিরোধ করবে। তারপরে আমি আমার চূড়ান্ত পাসওয়ার্ড স্ট্রিং তৈরি করতে কীগুলির সেই তালিকাটি ব্যবহার করি। এন্ট্রপি খুঁজতে আমি গণিতের কৌশলটিও ব্যবহার করেছি।



2

পাইথন 3, 252 বাইট

এটি আমার প্রথম কোড গল্ফ চ্যালেঞ্জ আমি করেছি! আমি জানি যে এখানে অন্যান্য পাইথন উত্তর রয়েছে (এটি সম্ভবত আমার চেয়ে ভাল) তবে এটি মজাদার লাগছিল, এবং তাই আমি এটিকে যাইহোক চেষ্টা করে দেখতে চেয়েছিলাম। এখানে গল্ফ করা সংস্করণ:

import random, math
with open("d") as f: d=f.read()
l=d.split()
for a in range(5):
 u=[]
 p=""
 for b in range(4):
  w=random.choice([w for w in l if not w in u and len(w)>=4])
  u.append(w)
  w=w.title()
  p+=w
 print("%s %s"%(p,math.log2(52)*len(p)))

আমি একটি অনলাইন চেষ্টা করে পোস্ট করব! লিঙ্ক, কিন্তু এটি একাধিক ফাইল সমর্থন করে না। সুতরাং এখানে একটি repl.it লিঙ্ক: https://repl.it/InIl/0

এছাড়াও, এখানে অসম্পূর্ণ সংস্করণটি রয়েছে:

import random
import math
with open("d") as f:
    dictionary = f.read() #this is the dictionary text file, simply saved as "d" as to use as few bytes as possible
words = dictionary.split() #here we turn that dictionary string into a list
for a in range(5): #here we iterate through 5 passwords
    used_words = []
    password = ""
    for b in range(4): #here we iterate through the 4 words in each password
        word = ""
        word = random.choice([word for word in words if not word in used_words and len(word) >= 4]) #Thanks to blackadder1337 from #python on freenode IRC for helping me with this.
        used_words.append(word)
        word = word.title()
        password = password + word
    print("%s %s"%(password, math.log2(52) * len(password)))

যেমনটি আমি বলেছিলাম, এটি আমার প্রথমবারের কোড গফলিং, সুতরাং আমি নিশ্চিত যে এটি অনেক উন্নত হতে পারে।


পিপিসিজিতে আপনাকে স্বাগতম!
টেলর স্কট

2

tcl, 137

নিশ্চিতভাবে বিজয়ী নয়, তবে আমি মনে করি এটি আরও কিছুটা গল্ফ হতে পারে।

time {set p "";time {set p [string totitle [lindex $d [expr int(rand()*[llength $d])]]]$p} 4;puts $p\ [expr 5.7004*[string length $p]]} 5

ডেমো - লাইন 1 উদ্দেশ্যটি কেবল অভিধানের বিষয়বস্তুগুলিকে ভেরিয়েবলের মধ্যে রাখাd


আপনি সম্ভবত এটি গলফ করতে পারেন যেহেতু পাসওয়ার্ডে 5 এর পরিবর্তে 4 টি শব্দ প্রয়োজন
কুয়ানহুলিও

এবং আপনি 4 এর পরিবর্তে 5 পাসওয়ার্ড চেয়েছিলেন! LOL! আমি সংখ্যা মেলে না!
সার্জিওল

Hahaha! @ সার্জিওল
কুয়ানহুলিও

সংশোধন করা হয়েছে! @ কুয়ানহুলিও
সার্জিওল

এটা ভাল. সুন্দর কাজ.
কুয়ানহুলিও 23

0

ভিম, 87 কীস্ট্রোক

qq:r!echo "$RANDOM"l<CR>D:w o|e w<CR>@"ev4bd:w|bp<CR>p0~wX~wX~wX~Y:.!wc -c<CR>A*5.7003<Esc>:.!bc<CR>PJq4@q

ধরে নিন যে অভিধানটি একটি ফাইলের মধ্যে রয়েছে w। সর্বদা 4 টি টানা শব্দ ব্যবহার করবে

ব্যাখ্যা:

qq                       Start recording a macro named 'q'
:r!echo "$RANDOM"l<CR>   Append the result of the shell command `echo "$RANDOM"l`
D                        Delete what you just appended
:w o|                    Save the buffer to the file 'o' and ..
e w<CR>                  Open the file 'w'
@"                       Execute the text we deleted as a normal-mode command
                         This will move the cursor a random number of characters
                         to the right
e                        Go to the end of the next word
v4bd                     Delete 4 words backwards
:w|                      Save the file and ..
bp<CR>                   Open the last buffer (the 'o' file)
p                        Paste the 4 words we deleted
0                        Move the cursor to the beginning of the line
~wX~wX~wX~               Remove the spaces between the words and capitalize
Y                        Copy current line
:.!wc -c<CR>             Pipe the current line through 'wc -c'
A*5.7003<Esc>            Append "*5.7003" to the end of the line
:.!bc<CR>                Pipe the current line through 'bc'
P                        Paste the password above the current line
J                        Join with line bellow
q                        Stop recording the 'q' macro
4@q                      Run the 'q' macro 4 times

0

কিউ / কেডিবি +, 76 74 65 56 বাইট

সমাধান:

{(x;5.70044*(#)x)}(,/)@[;0;upper]each -4?" "vs(*)(0:)`:w

উদাহরণ:

q){(x;5.70044*(#)x)}(,/)@[;0;upper]each -4?" "vs(*)(0:)`:w
"RulingOverheadSaddensPriest"
153.9119

ব্যাখ্যা:

শব্দের তালিকায় পড়ুন, "" বিচ্ছিন্ন হয়ে যান, এই তালিকা থেকে 4 টি এলোমেলো শব্দ চয়ন করুন, প্রতিটি শব্দের বড় হাতের অক্ষর রেখে একসাথে যোগদান করুন join এটিকে ল্যাম্বডা ফাংশনে ফিড দিন যা পাসওয়ার্ড এবং গণনা করা 'এনট্রপি' দেয়:

                                                     `:w / the wordlist is a file called 'w'
                                                 (0:)    / read in the file list (\n separated list)
                                              (*)        / take first (and only) item in the list
                                         " "vs           / split this on " "
                                      -4?                / take 4 random items from this list, neg means 'dont put back'
                      @[; ;     ]                        / apply a function to variable at indices (variable is implicit)
                           upper                         / uppercase (the function being applied)
                         0                               / index 0, the first character
                                 each                    / each of the 4 random items
                  (,/)                                   / 'raze' (flatten lists)
{                }                                       / anonymous lambda function
 (x;            )                                        / a 2-item list, x is first item
            (#)x                                         / count x, return the length of the list
    5.70044*                                             / multiply by 5.70044

নোট:

আমি এর বদলে ved.7০০44 ব্যবহার করেছি 2 xlog 52 xexp...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.