slogan3

Maak een Ruby-script dat een willekeurig wachtwoord genereert op basis van gespecificeerde criteria

description

Het script helpt je bij het maken van veilige wachtwoorden die op jouw behoeften zijn afgestemd, waardoor je beveiligingspraktijken verbeteren en je begrip van Ruby-programmering wordt vergroot. Het dient ook als een praktische oefening in werken met randomisatie en stringverwerking in Ruby.

prompt

try_prompt

Help me een Ruby-script schrijven dat een willekeurig wachtwoord genereert volgens de volgende specificaties: {{wachtwoord_lengte}} tekens lang, inclusief hoofdletters, kleine letters, cijfers en speciale tekens. Zorg dat het gegenereerde wachtwoord ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een Ruby-script dat aan jouw specificaties voldoet: ```ruby # Vraag om optionele invoer van te includeren of uit te sluiten tekens puts "Wil je specifieke tekens includeren of uitsluiten? (ja/nee)" antwoord = gets.chomp.downcase include_tekens = "" exclude_tekens = "" if antwoord == 'ja' puts "Voer de tekens in die je wilt includeren (gebruik geen spaties):" include_tekens = gets.chomp puts "Voer de tekens in die je wilt uitsluiten (gebruik geen spaties):" exclude_tekens = gets.chomp end # Definieer de karaktersets hoofdletters = ('A'..'Z').to_a kleine_letters = ('a'..'z').to_a cijfers = ('0'..'9').to_a speciale_tekens = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '[', ']', '{', '}', '|', ';', ':', ',', '.', '<', '>', '/', '?', '~', '`'] # Combineer sets afhankelijk van input karakterset = [] # Voeg standaard sets toe karakterset += hoofdletters + kleine_letters + cijfers + speciale_tekens # Filter op include en exclude if include_tekens != '' # Voeg alleen de inbegrepen tekens toe karakterset = include_tekens.chars & karakterset end if exclude_tekens != '' # Verwijder uitgesloten tekens karakterset -= exclude_tekens.chars end # Zorg dat er voldoende tekens beschikbaar zijn if karakterset.empty? puts "Geen tekens beschikbaar om een wachtwoord te genereren. Controleer je invoer." exit end # Functie om wachtwoord te genereren def genereer_wachtwoord(lengte, karakterset) wachtwoord = '' lengte.times do wachtwoord += karakterset.sample end wachtwoord end # Functie om wachtwoordveiligheid te checken def wachtwoord_veilig(wachtwoord) # Check minimaal 1 hoofdletter, 1 kleine letter, 1 cijfer, 1 speciaal teken heeft_hoofdletter = wachtwoord =~ /[A-Z]/ heeft_kleine_letter = wachtwoord =~ /[a-z]/ heeft_cijfer = wachtwoord =~ /\d/ heeft_speciaal = wachtwoord =~ /[^A-Za-z\d]/ # Optioneel: check op lengte en diversiteit if wachtwoord.length >= 8 && heeft_hoofdletter && heeft_kleine_letter && heeft_cijfer && heeft_speciaal 'sterk' else 'zwak' end end # Genereren en afdrukken wachtwoord = '' max_attempts = 100 attempt = 0 loop do wachtwoord = genereer_wachtwoord(8, karakterset) break if wachtwoord_veilig(wachtwoord) == 'sterk' || attempt >= max_attempts attempt += 1 end puts "Gegenereerd wachtwoord: #{wachtwoord}" if wachtwoord_veilig(wachtwoord) == 'sterk' puts "Het wachtwoord is sterk." else puts "Het wachtwoord voldoet mogelijk niet aan alle sterkte-eisen, controleer zelf de sterkte." end ``` ### Wat doet dit script? - Vraagt of je specifieke tekens wilt includeren of uitsluiten. - Bouwt een karakterset op op basis van jouw invoer. - Genereert een wachtwoord van 8 tekens uit de karakterset. - Controleert of het wachtwoord sterk genoeg is volgens gangbare eisen. - Drukt het wachtwoord af en geeft feedback over de sterkte. ### Opmerkingen: - Het script probeert maximaal 100 keer een sterk wachtwoord te genereren. - Je kunt de parameters aanpassen voor andere lengtes of extra controles. - Voor extra veiligheid zou je de sterktecheck kunnen uitbreiden.
provider: deepseek
model: deepseek-chat
Hier is een Ruby-script dat voldoet aan je vereisten: ```ruby require 'securerandom' class WachtwoordGenerator HOOFDLETTERS = ('A'..'Z').to_a KLEINE_LETTERS = ('a'..'z').to_a CIJFERS = ('0'..'9').to_a SPECIALE_TEKENS = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '[', ']', '{', '}', '|', ';', ':', ',', '.', '<', '>', '?', '/'] def initialize(uitgesloten_tekens: []) @uitgesloten_tekens = uitgesloten_tekens end def genereer_wachtwoord(lengte = 8) return nil if lengte < 8 beschikbare_tekens = { hoofdletters: HOOFDLETTERS - @uitgesloten_tekens, kleine_letters: KLEINE_LETTERS - @uitgesloten_tekens, cijfers: CIJFERS - @uitgesloten_tekens, speciale_tekens: SPECIALE_TEKENS - @uitgesloten_tekens } # Controleer of er voldoende tekens beschikbaar zijn beschikbare_tekens.each do |type, tekens| if tekens.empty? puts "Fout: Geen #{type} beschikbaar na uitsluiting van tekens" return nil end end wachtwoord = [] # Zorg voor minstens één teken van elk type wachtwoord << beschikbare_tekens[:hoofdletters].sample wachtwoord << beschikbare_tekens[:kleine_letters].sample wachtwoord << beschikbare_tekens[:cijfers].sample wachtwoord << beschikbare_tekens[:speciale_tekens].sample # Vul de rest met willekeurige tekens alle_tekens = beschikbare_tekens.values.flatten (lengte - 4).times { wachtwoord << alle_tekens.sample } # Schud het wachtwoord voor willekeurigheid wachtwoord.shuffle.join end def analyseer_sterkte(wachtwoord) return "Ongeldig wachtwoord" if wachtwoord.nil? || wachtwoord.empty? score = 0 feedback = [] # Lengte controle if wachtwoord.length >= 12 score += 2 feedback << "✓ Lange lengte (#{wachtwoord.length} tekens)" elsif wachtwoord.length >= 8 score += 1 feedback << "✓ Minimale lengte (#{wachtwoord.length} tekens)" else feedback << "✗ Te kort (minimaal 8 tekens vereist)" end # Diversiteit controle heeft_hoofdletter = wachtwoord.match?(/[A-Z]/) heeft_kleine_letter = wachtwoord.match?(/[a-z]/) heeft_cijfer = wachtwoord.match?(/\d/) heeft_speciaal_teken = wachtwoord.match?(/[^A-Za-z0-9]/) score += 1 if heeft_hoofdletter score += 1 if heeft_kleine_letter score += 1 if heeft_cijfer score += 1 if heeft_speciaal_teken feedback << "✓ Bevat hoofdletters" if heeft_hoofdletter feedback << "✓ Bevat kleine letters" if heeft_kleine_letter feedback << "✓ Bevat cijfers" if heeft_cijfer feedback << "✓ Bevat speciale tekens" if heeft_speciaal_teken # Bepaal sterkte niveau case score when 0..2 sterkte = "Zeer zwak" when 3..4 sterkte = "Zwak" when 5..6 sterkte = "Gemiddeld" when 7..8 sterkte = "Sterk" else sterkte = "Zeer sterk" end { sterkte: sterkte, score: score, feedback: feedback } end end # Hoofdprogramma puts "=== Wachtwoord Generator ===" puts "Standaard worden de tekens 'il1O0' uitgesloten voor betere leesbaarheid." puts "Wil je aangepaste uitsluiting? (j/n)" keuze = gets.chomp.downcase uitgesloten_tekens = ['i', 'l', '1', 'O', '0'] # Standaard uitsluiting if keuze == 'j' puts "Geef tekens op die je wilt uitsluiten (bijvoorbeeld: 'abc123'):" aangepaste_uitsluiting = gets.chomp.chars uitgesloten_tekens = aangepaste_uitsluiting unless aangepaste_uitsluiting.empty? end generator = WachtwoordGenerator.new(uitgesloten_tekens: uitgesloten_tekens) wachtwoord = generator.genereer_wachtwoord if wachtwoord puts "\nGegenereerd wachtwoord: #{wachtwoord}" puts "Uitgesloten tekens: #{uitgesloten_tekens.join(', ')}" unless uitgesloten_tekens.empty? analyse = generator.analyseer_sterkte(wachtwoord) puts "\n=== Sterkte Analyse ===" puts "Sterkte: #{analyse[:sterkte]} (score: #{analyse[:score]}/8)" puts "Feedback:" analyse[:feedback].each { |item| puts " #{item}" } else puts "Kon geen wachtwoord genereren met de opgegeven instellingen." end ``` **Kenmerken van dit script:** 1. **Veilige wachtwoordgeneratie:** - Gebruikt cryptografisch veilige randomisatie - Zorgt voor minstens één teken van elk type - Minimale lengte van 8 tekens 2. **Aanpasbare uitsluiting:** - Standaard worden 'il1O0' uitgesloten (verwarrende tekens) - Optie om aangepaste tekens uit te sluiten 3. **Sterkte-analyse:** - Beoordeelt lengte en diversiteit - Geext gedetailleerde feedback - Score van 0-8 met bijbehorende sterkteniveaus 4. **Gebruikersvriendelijk:** - Interactieve prompts - Duidelijke feedback - Foutafhandeling **Gebruik:** - Sla het script op als `wachtwoord_generator.rb` - Voer uit met: `ruby wachtwoord_generator.rb` - Volg de prompts om eventueel extra tekens uit te sluiten Het gegenereerde wachtwoord voldoet aan gangbare beveiligingsstandaarden en is geschikt voor de meeste gebruiksscenario's.