Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Passwortsperre (Schleifen)

Wer kennt es nicht. Bei Mobiltelephonen, Webseiten und sogar am Bankomaten müssen Passwörter eingegeben werden. Damit nicht ein Unbefugter alle möglichen Passwörter ausprobiert, wird (meist) nach dem dritten falschen Eingabeversuch das Konto gesperrt.

Das Passwort sei im Folgenden fest vorgegeben: "098765".

Schreiben Sie ein Programm, das den Anwender nach dem Passwort fragt. Sobald es richtig eingegeben wurde, gilt die Person als berechtigt und das Wort "BERECHTIGT" soll ausgegeben werden. Nach jeder fehlerhaften Eingabe soll jedoch ausgegeben werden dass das Passwort falsch war und wie viele Versuche noch bleiben.

Nach der dritten falschen Eingabe erscheint dann "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!"

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

36 Lösung(en)

package ch.programmieraufgaben.iteration.passwortsperre;

import java.util.Scanner;

/**
 * Passwortsperre nach dem 3. fehlgeschlagenen Passwortversuch
 * @author Philipp Gressly (phi@gress.ly)
 */
/*
 * History: first Implementation: Jan 22, 2013
 * Bugs   : none known.
 */
public class PasswortsperreHash {
    public static void main(String[] args) {
        new PasswortsperreHash().top();      
    }

    // In der Praxis werden Passwörter nie auf dem Server abgelegt.
    // Anstelle ist besser eine Einwegverschlüsselung (Hash) wie 
    //               z. B. MD5, SHA oder Quersumme zu verwenden.
    int    passwort        = "098765".hashCode();
    int    MAX_VERSUCHE    =        3;
    
    
    void top() {
       int     versuche    =        0; // bereits getätigte Passworteingaben
       boolean eingeloggt  =    false; 
       
       while(versuche < MAX_VERSUCHE & (! eingeloggt)) {
          String versuch = einlesen("Passwort (" + (versuche + 1) + ". Versuch)");
          versuche = versuche + 1;
          if(passwort == versuch.hashCode()) {
              eingeloggt = true;
          } else {
              int verbleibendeVersuche = MAX_VERSUCHE - versuche;
              System.out.print("Passwort falsch. Noch " + verbleibendeVersuche + " Versuch");
              // Mehrzahl im Text
              if(1 != verbleibendeVersuche) {
                  System.out.print("e");
              }
              System.out.println(".");
          }
       }
       if(eingeloggt) {
           System.out.println("BERECHTIGT");
       } else {
           System.out.println("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
       }
    } // end method top()
    
    
    
    // Hilfsfunktion zur Texteingabe
    Scanner sc = new Scanner(System.in);
    String einlesen(String wert) {
        System.out.println("Bitte " + wert + " eingeben: ");
        return sc.nextLine();
    } // end method einlesen()
    
    
} // end of class PasswortsperreHash
                

Lösung von: Philipp Gressly Freimann (SANTIS Training AG)

#include <iostream>
#include <conio.h>
using namespace std;

class Bankkonto
{
    private:
        int    passwort[6];
        double guthaben;
        int    anzahlVersuche;
        bool   berechtigt;

    public:
         int     kontoNummer[10];

    Bankkonto()
    {

    }

    void init()
    {
        anzahlVersuche = 3;
        guthaben = 0;
        berechtigt = false;

        //Benutzer kann Kontonummer und PIN selbst wählen
            char eingabe;
            cout <<"Neues Bankkonto" <<endl
                 <<"===============" <<endl
                 <<"Bitte 10 Stellige Kontonummer eingeben: ";
            for(int i = 0; i < 10; i++)
            {
                eingabe = getche();
                if( (int)eingabe-48 >= 0 && (int)eingabe-48 < 10 )
                    kontoNummer[i] = (int)eingabe-48;
                else kontoNummer[i] = 0;
            }

            cout <<endl <<"Bitte 6 stellige Pin eingeben: ";
            for(int i = 0; i < 6; i++)
            {
                eingabe = getch(); cout <<"*";
                if( (int)eingabe-48 >= 0 && (int)eingabe-48 < 10)
                    passwort[i] = (int)eingabe-48;
                else passwort[i] = 0;
            }
            cout <<endl <<endl;

            cout <<"Konto erstellt!" <<endl <<endl;
            getch();
    }

    void ausgabe()
    {
        if(!berechtigt)
        {
            cout <<"Sie sind nicht berechtigt \x81 \bber dieses Konto zu verf\x81gen!" <<endl;

            if(anzahlVersuche == 0) cout <<"Dieses Konto wurde gesperrt!" <<endl;

            return;
        }

        cout <<"Kontonummer: ";
        for(int i = 0; i < 10; i++)
            cout <<kontoNummer[i];
            cout <<endl;

        cout <<"Passwort: ";
        for(int i = 0; i < 6; i++)
            cout <<"*";
            cout <<endl;

        cout <<"Guthaben: " <<guthaben <<endl;


        char eingabe;
        double betrag;

        while(1)
        {
            cout <<"Was m\x94 \bchten Sie als n\x84 \bchstes tun?" <<endl;
            cout <<"\t-(u) \x81 \bberweisung" <<endl
                 <<"\t-(g) gutschrift" <<endl
                 <<"\t-(a) kontostand aktualisieren" <<endl
                 <<"\t-(s) schliessen" <<endl
                 <<"Eingabe: ";

            eingabe = getche();

            cout <<endl <<endl;
            if(eingabe == 'u')
                {
                    cout <<"Betrag der \x81 \bberwiesen werden soll: ";
                    cin >> betrag; cout <<endl <<"Danke." <<endl;
                    getch();
                    system("CLS");
                    ueberweisung(betrag);
                }
            else if(eingabe == 'g')
                {
                    cout <<"Gutschrift eingeben: ";
                    cin >> betrag; cout <<endl <<"Danke." <<endl;
                    getch();
                    system("CLS");
                    gutschrift(betrag);
                }
            else if(eingabe == 'a')
            {
                system("CLS");
                ausgabe();
                break;
            }
            else if(eingabe == 's')
            {
                berechtigt = false;
                return;
            }
            else
            {
                cout <<"Falsche Eingabe!" <<endl <<endl;
            }
        }
    }

    void pinEingabe()
    {
        if(anzahlVersuche == 0)
        {
            cout <<"Konto gesperrt!" <<endl;
            return;
        }

        cout <<"Sie haben noch " <<anzahlVersuche <<" Versuche." <<endl;

        char eingabe[6];

        cout <<"Geben sie den PIN ein: ";
        for(int i = 0; i < 6; i++)
        {
            eingabe[i] = (int)getch()-48; cout <<"*";
        }
        cout <<endl <<endl;

        //Überprüfe
        for(int i = 0; i < 6; i++)
        {
            if(eingabe[i] != passwort[i])
            {
                anzahlVersuche--;
                berechtigt = false;
                return;
            }
        }

        system("CLS");
        anzahlVersuche = 3;
        berechtigt = true;
    }

    void ueberweisung(double betrag)
    {
        guthaben-=betrag;
    }

    void gutschrift(double betrag)
    {
        guthaben+=betrag;
    }
};

int countRecords(char *fileName) //Zählt anzahl der Konten in der dat datei
{
    int i = 0;
    FILE *file;
    Bankkonto b;

    if(!fopen(fileName, "rb"))return 0;

    file = fopen(fileName, "rb");

    for(i = 0; fread(&b, sizeof(Bankkonto), 1, file) == 1; i++);

    fclose(file);

    return i;
}

void neuesKonto(char *name_File)
{
    FILE *file = fopen(name_File, "ab");

    Bankkonto neuesBK;
    neuesBK.init();

    fwrite(&neuesBK, sizeof(neuesBK), 1, file); //speichere

    fclose(file);
}

void saveFile(char *name_File, Bankkonto b[], int anzahlKonten) //Überschreiben der Datei um änderungen zu speichern
{
    FILE *file = fopen(name_File, "wb");
    for(int i = 0; i < anzahlKonten; i++)
        fwrite(&b[i], sizeof(b[i]), 1, file);
    fclose(file);
}

void kontenAbrufen(char *name_File)
{
    cout <<"KONTEN ABRUFEN" <<endl <<endl;
    int anzahlKonten = countRecords(name_File);

    if(anzahlKonten == 0)return;

    FILE *file = fopen(name_File, "rb");

    Bankkonto b[anzahlKonten];

    for(int i = 0; fread(&b[i], sizeof(b[i]), 1, file) == 1; i++);

    fclose(file);

    int eingabe;
    while(1)
    {
        system("CLS");
        cout <<endl;
        for(int i = 0; i < anzahlKonten; i++)
        {
            cout <<i+1 <<".Kontonummer: ";

            for(int j = 0; j < 10; j++)
                cout <<b[i].kontoNummer[j];
            cout <<endl <<endl;
        }



        cout <<"W\x84hlen sie eine Kontonummer aus!" <<endl
             <<"(nummer eingabe) oder 0 um zu beenden." <<endl <<endl;
        scanf("%d", &eingabe); fflush(stdin);
        cout <<endl <<endl;
        if(eingabe == 0) break;
        else if(eingabe-1 >= 0 && eingabe-1 < anzahlKonten)
        {
            cout <<"Kontonummer: ";
            for(int j = 0; j < 10; j++)
            cout <<b[eingabe-1].kontoNummer[j];
            cout <<endl;
            b[eingabe-1].pinEingabe();
            b[eingabe-1].ausgabe();
        }
        else
            cout <<"Falsche Eingabe!" <<endl <<endl;
            getch();

    }

    saveFile(name_File, b, anzahlKonten); //Überschreiben der Datei, damit änderungen gespeichert werden.
}

int main()
{
    system("TITLE Geldautomat");
    char name_File[] = "konten.dat";//Konten werden in einer Binärdatei gespeichert
    char eingabe;
    int anzahlKonten;

    while(1)
    {
        system("CLS");

        cout <<"W\x84hlen Sie: " <<endl
             <<"\t(n) - neues Konto hinzuf\x81gen " <<endl
             <<"\t(k) - konto abrufen " <<endl
             <<"\t(s) - schliessen des Programms " <<endl <<endl;

        cout <<"Eingabe: "; eingabe = getche(); cout <<endl;

        if(eingabe == 'n')
        {
            neuesKonto(name_File);
        }
        else if(eingabe == 'k')
        {
            kontenAbrufen(name_File);
        }
        else if(eingabe == 's')
        {
            return 0;
        }
        else
            cout <<"Falsche Eingabe!" <<endl <<endl;
    }

}

                

Lösung von: Christian :) (Hochschule Merseburg)

// Autor:				Andy Großhennig
// Solution for task:	Passwortsperre (Schleifen)

#include <iostream>

using namespace std;

// Function: Read attempts for the password
string getPass()
{
	string sAttempt;

	cout << "Bitte Passwort eingeben: ";
	cin >> sAttempt;

	return sAttempt;
}

// Function: Check whether the attempt is correct
void checkPass()
{
		string sPassword = "098765";

		string sAttempt;
		int iRestAttempts = 3;

		// Loop: Count attemps and comparison the attemps with the correct password
		for(int i = 0;i < 3;i++)
		{
			sAttempt = getPass();

			if(sAttempt == sPassword)
			{
				cout << "\nBerechtigt!";
				return;
			}
			else
			{
				// If: Query whether the attemps are less two
				if(i < 2)
				{
					iRestAttempts--;
					cout << "\nPasswort falsch. Noch " << iRestAttempts << " Versuche.\n";
				}
			}
		}

		// Output if the attemps reached three
		cout << "\nKonto gesperrt: Anzahl Passwortversuche ueberschritten!";
}

int main()
{
	checkPass();

	cout << "\n\n";
	system("Pause");
	return 0;
}
                

Lösung von: Andy Großhennig (Bundeswehr)

def passwort(code):
    versuch = 3
    eintritt = False
    while versuch >-1 and eintritt ==False:
        eingabe = input("Bitte Passwort eingeben: ")
        if eingabe == code:
            print ("BERECHTIGT")
            eintritt = True
        else:
            print("Falsches Passwort. Sie haben noch ", versuch, " Versuche")
            versuch -=1
    print("Das wars")

passwort("098765")
                

Lösung von: Py Thon ()

'von Patrick Prem
Public Class Form1
    Dim Versuche As Integer
    Private Sub cmdpasswort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdpasswort.Click
        Dim Passwort As String = "098765"   'Gespeichertes Passwort
        Dim Passworteingabe As String  'Neues Passwort
        Dim i As Integer 'Lauf variable
        Dim richtig As Boolean = True


        Passworteingabe = InputBox("Bitte Passwort eingeben", "Passwort eingabe") 'Passwort einlese
        If Passwort.Length = Passworteingabe.Length Then             'Abfrage ob das Passwort stimmt
            For i = 0 To Passworteingabe.Length - 1
                If Not Passwort.Chars(i) = Passworteingabe.Chars(i) Then
                    richtig = False
                End If
            Next
        Else : richtig = False
        End If


        If richtig = True Then    'Auswertung der Abfrage   
            MsgBox("Korrekt")
            Versuche = 0
            lbversuche.Text = Versuche
        ElseIf Versuche >= 3 Then    'Versuchszähler
            MsgBox("gesperrt")
        Else
            MsgBox("Falsche eingabe")
            Versuche = Versuche + 1
            lbversuche.Text = Versuche
        End If





    End Sub
End Class
                

Lösung von: Patrick Prem (Htl Jenbach)

$in, $ct = 3, $pw = '098765';

print "Tresor.\n**********************************\nBitte geben sie das Passwort ein: ";
while(){
	chomp($in=<STDIN>);
	if($in eq $pw){
		print "BERECHTIGT\n\n";
		last;
	}else{
		$ct--;
		print "Ungültige Eingabe! Sie haben noch $ct Versuche: ";
	}
	if($ct==0){
		print "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!\n";
		last;
	}
}
                

Lösung von: Name nicht veröffentlicht

def passworttest(geheim):
	geheim = geheim
	i = 0
	while True:
		eingabe = int(input("Bitte die Zahl eingeben"))
		if i == 2 :
			print(" Der Code wurde 3 mal falsch eingegeben")
			break
		elif eingabe != geheim:
			i +=1
		else:
			print(" War der richtig Code")
			break 
                

Lösung von: serimet hokart (wasweißich)

#!/usr/bin/env ruby

ja = 9876543210

Versuche = 3

while Versuche > 0 do
	
	puts "Bitte geben Sie ihr Paswort ein!"
	vlt = gets.to_f
	
	if vlt == ja
		Versuche = 0
		puts "\e[2J\e[f"
	
	else 
		Versuche = Versuche - 1
		print "\e[2J\e[s"
		puts "FALSCH Bitte noch einmal versuchen"
		puts "Verbleibende Versuche:" + Versuche.to_s
	end
end

if vlt == ja
	puts "Entsperrt!"
else 
	puts "Gesperrt"
end

gets

                

Lösung von: Name nicht veröffentlicht

# -*- coding:utf-8 -*-

for i in range(2, -1, -1):
    r = raw_input('Password:')
    if r == '098765':
        print 'BERECHTIGT'
        break
    if i == 0:
        print 'KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!'
        break
    print 'Wrong Password. {0} attempts left.'.format(i)
    
                

Lösung von: Name nicht veröffentlicht

program Passwortsperre (input, output);
{ gibt eine "Gesperrt"-Meldung nach X falschen Passworteingaben aus. }

    const
    PASSWORD = '098765';
    VERSUCHE = 3;

    type
    tIndex = 0..VERSUCHE;

    var
    i: tIndex;
    Passwort: string[32];
    PwRichtig: boolean;

begin
    { var initialisieren }
    PwRichtig := false;
    i := 0;

    { PW einlesen }
    repeat
        write('Bitte Passwort eingeben');
        if i > 0 then
            write(' (Noch ', VERSUCHE - (i), ' Versuch(e))');
        write(': ');
        readln(Passwort);
        if PASSWORD = Passwort then
            PwRichtig := true;
        i := i + 1
    until (PwRichtig) or (i >= VERSUCHE);

    { Ergebnis ausgeben }
    writeln;
    if PwRichtig then
        writeln('BERECHTIGT')
    else
        writeln('KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!')
end. { Passwortsperre }

                

Lösung von: Patrick Reif ()

import java.util.Scanner;

public class passcheck {

    private String pass = "098765";

    // Scanner zum einlesen der Usereingabe
    private Scanner scan = new Scanner(System.in);

    /*
     * Stimmt das Passwort wird der boolean zu true und wird in der Hauptmethode
     * geprüft
     */
    private boolean richtigespass = false;

    // Anzahl an Eingabeversuchen
    static int zaehler = 3;

    // Gibt true aus, sollte die Eingabe dem Passwort entsprechen
    private boolean checkPw(String eingabe) {
	return eingabe.equals(pass);
    }

    // Überprüft das Passwort und fordert den User zur Eingabe auf
    private boolean eingabeAufforderung() {
	System.out.println("Geben Sie das Passwort an: ");

	// Überprüft das Passwort
	if (checkPw(scan.next())) {
	    System.out.println(System.getProperty("line.separator")
		    + "BERECHTIGT");
	    richtigespass = true;
	}

	// Trifft zu wenn die Eingabe nicht mit dem Passwort überein stimmt
	else {
	    zaehler--; // Versuche werden reduziert

	    // Wenn Versuche aufgebraucht sind wird Meldung ausgegeben
	    if (zaehler == 0) {
		System.out.println(System.getProperty("line.separator")
			+ "KONTO GESPERRT!"
			+ System.getProperty("line.separator")
			+ "ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!"
			+ System.getProperty("line.separator"));
	    }
	    // Wenn noch 1+ Versuche vorhanden sind wird ausgegeben wie viele
	    else {
		System.out.println(System.getProperty("line.separator")
			+ "Falsches Passwort!"
			+ System.getProperty("line.separator")
			+ "Sie haben noch " + zaehler + " Versuch/e"
			+ System.getProperty("line.separator"));
	    }
	}
	return richtigespass; /*
			       * ist true wenn das Passwort mit der Eingabe
			       * übereinstimmt
			       */
    }

    // Hauptmethode
    public static void main(String[] args) {
	// Klassenvariable um auf die private Variablen zugreifen zu können
	passcheck tue = new passcheck();

	/*
	 * Läuft so lange bis die Versuche ausgehen oder bis die Eingabe mit dem
	 * Passwort übereinstimmt
	 */
	while (true) {

	    // Trifft zu wenn die Eingabe mit dem Passwort übereinstimmt
	    if (tue.eingabeAufforderung()) {// ruft Methode zur Überprüfung auf
		break;
	    }

	    // Wenn keine Versuche mehr übrig sind
	    if (zaehler == 0) {
		break;
	    }
	}
    }

}
                

Lösung von: Sebastian Littel ()

Richtiges_Passwort='098765'
def passwortsperre():
    versuche = 3
    print('Sie haben %s Versuche' % versuche)
    while versuche > 0:
        code = input('Bitte bestätigen Sie die Pinnnummer!')
        if code == Richtiges_Passwort:
            print('BERECHTIGT')
            versuche = 0
            print(input())
        else:
            versuche = versuche - 1
            print('Falsch, Sie haben noch %s Versuche' % versuche)
            if versuche == 0:
                print('KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!')
                print(input())
passwortsperre()

                

Lösung von: Arnim Pankratz (Freiherr-vom-Stein-Gymnasium Betzdorf)

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>


int main()
{
	// Deklarationen
	int iPasswort = 198765;
	int iZähler = 4;
	int iEingabe;

	do {

	// Benutzer auffordern Passwort einzugeben
	printf("\nBitte geben sie das Passwort ein: ");
	scanf_s("%i", &iEingabe);
	fflush(stdin);

	// Passwort prüfen
	if(iEingabe == iPasswort) {
		printf("\n\nBerechtigt!");
	} else {
		iZähler -= 1;
		if(iZähler > 0) {
		printf("\nPasswort Falsch!\nSie haben noch %i Versuche!", iZähler);
		}
	}

	// Fehlerausgabe
	if(iZähler <= 0) {
		printf("\nKonto Gesperrt: Zu viele Fehlgeschlagene Versuche!");
		getchar();
		return 0;
	}

	} while(iEingabe != iPasswort);

	getchar();
	return 0;
}
                

Lösung von: Elias Zech (Optics Balzers)

Module Module1

    Sub Main()
        Dim Passwort As String = "098765"
        Dim Versuch As String
        Dim Zähler As Integer = 2
        Dim FalschZähler As Integer = 1

        Console.WriteLine("Bitte geben sie das passwort ein:")

        While Zähler >= 0
            Console.Write("Pw: ")

            Versuch = Console.ReadLine()

            If Versuch = Passwort Then
                Console.Clear()
                Console.WriteLine("BERECHTIGT")
                Console.ReadLine()
                Exit Sub
            Else
                Console.Clear()
                Console.WriteLine("Falsches Passwort, noch " & Zähler & " Versuche übrig")

                If Zähler = 0 Then
                    Console.Clear()
                    Console.WriteLine("KONTO GESPERRT: ANZAHL PASSWORT VERSUCHE ÜBERSCHRITTEN " & "(" & FalschZähler & ")")
                    Console.ReadLine()
                    Exit Sub
                End If

                FalschZähler += 1
            End If

            Zähler -= 1
        End While
    End Sub
End Module
                

Lösung von: Elias Zech (Optics Balzers)

puts "Bitte Password eingeben:"
(1..3).each do |i|
  if gets.chomp == "098765"
    puts "BERECHTIGT"
    break
  else
    if i == 3
      puts "KONTO GESPERRT: ANZAHL DER VERSUCHE ÜBERSCHRITTEN!"
    else
      puts "Falsches Password!#{3-i} Versuche verbleibend"
    end
  end
end
                

Lösung von: Name nicht veröffentlicht

/**** REXX ************************************************************/
/*    EXEC die den Anwender nach einem Passwort fragt                 */
/**********************************************************************/

versuche = 0

say 'Bitte Passwort eingeben:'

do while versuche ¬= 3
   pull pw
   if pw = 098765 then do
      say BERECHTIGT
      exit
   end
   else do
      versuche = versuche + 1
      say 'Passwort nicht Korrekt. Noch ' || 3 - versuche ||,
         ' Versuche:'
   end
end

say 'KONTO GESPERRT: ANZAHL VERSUCHE UEBERSCHRITTEN!'
                

Lösung von: Gabriel Daw (Zürcher Kantonalbank)

//F#

open System

let pincode = "098765"
let maxVersuch = 3
    
let checkPass = 
    pincode.Equals(Console.ReadLine())

let startPruefung =
    let rec pruefung versuch =
        if versuch < maxVersuch then
            match checkPass with
            | true  -> printfn "BERECHTIGT"
            | false -> printfn "KONTO GESPERRT: ANZAHL (%d) PASSWORTVERSUCHE ÜBERSCHRITTEN!" maxVersuch
        else
            pruefung (versuch + 1)
    pruefung 1
    
startPruefung
                

Lösung von: Vural Acar ()

use strict;
use warnings;
use diagnostics;
use 5.010;
use utf8;

INIT {
	my $passwd = "098765";
	my $eingabe;
	my $i;
	
	for ($i = 3; $i > 0; $i--) {
		print "Geben Sie das Passwort ein:\n>";
		chomp($eingabe = <STDIN>);
		if ($eingabe eq $passwd) {
			print "BERECHTIGT!\n";
			sleep(2);
			last;
		}
		if ($i == 1) {
			print "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!\n";
			sleep(2);
			last;
		}
		else {
			print "Noch ".($i - 1)." weitere Versuche.\n";
		}
	}
}
                

Lösung von: Name nicht veröffentlicht


import java.util.Scanner;


/**
 * Wer kennt es nicht. Bei Mobiltelephonen, Webseiten und sogar am Bankomaten 
 * müssen Passwörter eingegeben werden. Damit nicht ein Unbefugter alle 
 * möglichen Passwörter ausprobiert, wird (meist) nach dem dritten falschen 
 * Eingabeversuch das Konto gesperrt.
 * Das Passwort sei im Folgenden fest vorgegeben: "098765". 
 * Schreiben Sie ein Programm, das den Anwender nach dem Passwort fragt. 
 * Sobald es richtig eingegeben wurde, gilt die Person als berechtigt und das 
 * Wort "BERECHTIGT" soll ausgegeben werden. Nach jeder fehlerhaften Eingabe 
 * soll jedoch ausgegeben werden dass das Passwort falsch war und wie viele 
 * Versuche noch bleiben. Nach der dritten falschen Eingabe erscheint dann 
 * "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!"
 * 
 * @author RagingRobert
 */
public class Password {
    
    private final String password = "098765";
    private static int counter = 0;

    
    public static void main(String[] args) {
        Password instance = new Password();
        Scanner sc = new Scanner(System.in);
        while(counter < 3) {
        System.out.println("Bitte geben Sie das Password ein: ");
        String eingabe = sc.next();
        if (!instance.checkPassword(eingabe)) {
            instance.ausgabeFehler();
        } else {
            System.out.println("BERECHTIGT");
            break;
        }
    }}
    
    private void ausgabeFehler() {
        counter++; 
        if (counter == 3) {
            System.out.println("KONTO GESPERRT: ANZAHL PASSWORDVERSUCHE"
                    + "ÜBERSCHRITTEN!");
        } else {
             System.err.println
        ("Falsches Passwort! Es bleiben noch " + (3 - counter));
    }
    
    }
    private boolean checkPassword(String password) {
        if (password.length() != this.password.length()) {
            return false;
        }
        for (int i = 0; i < password.length(); i++) {
            if (password.charAt(i) != this.password.charAt(i)) {
                return false;
            }
        }
   return true;
    }
   
}

                

Lösung von: Robert König (Universität Passau)

# Python 3.4.2

zaehler = 3
while zaehler:
    passwort = input('Bitte geben Sie Ihr Passwort ein: ')
    if passwort != '098765':
        print('Falsches Passwort - noch', zaehler - 1, 'Versuche.')
    else:
        print('BERECHTIGT.')
        break
    zaehler -= 1


                

Lösung von: Hilli Hilli ()


"""author= Cromewell"""


def Passwortsperre():
    versuche= 3
    passwort= "098765"

    while versuche >0:
        eingabe= input("PASSWORT: ")
        if eingabe== passwort:
            print("BERECHTIGT")
            break

        elif eingabe != passwort:
            versuche -= 1
            print("NOCH", versuche, "VERSUCH/E")
            if versuche == 0:
                print("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!")

Passwortsperre()

                

Lösung von: Name nicht veröffentlicht

function input(trials) {
   if (prompt("Geben Sie Ihr Passwort ein:") == "098765")
      console.log("BERECHTIGT");
   else {
      trials--;
      if (trials ==  0) 
         console.log("Konto gesperrt: Anzahl Passwortversuche überschritten!");
      else {
         console.log("Verbleibende Versuche:" + trials);
         input(trials);
      }
   }
}

input(3);
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

#include <iostream>
#include <windows.h>
using namespace std;
void Wrt(string r){
    cout << r << endl;
}
const int passwort = 98765;
const char versuche = 3;
string eingabe = "\0";
int main()
{
    for(int i = 0; i < versuche; i++)
    {
      system("cls");
      Wrt("Gib bitte dein Passwort ein:");
      cin >> eingabe;
      if(passwort == atoi(eingabe.c_str())){
           system("cls");
           cout << "BERECHTIGT - Du hast dafuer " << i << " Versuch(e) gebraucht!\n\n";
           break;
      }
      else
      {
        cout << "Das eingegebene Passwort ist falsch! - Du hast noch " << versuche - i - 1  << " Versuche!";
        Sleep(1000);
      }
    }
    system("pause");
}
                

Lösung von: Hade Mohamed (HTL Österreich)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace passwortSperre
{
    class Program
    {
        static void Main(string[] args)
        {
            //"098765"
            string psw = "98765";
            string erg = PasswortCheck(psw);
            Ausgabe(erg);
            Console.ReadKey();

        }

        private static void Ausgabe(string erg)
        {
            Console.WriteLine(erg);
        }

        private static string PasswortCheck(string psw)
        {
            string eingabe = " ";
            string erg = " ";

            for (int i = 3; i > 0; i--)
            {
                eingabe= Console.ReadLine();
                if (eingabe == psw)
                    return erg = "BERECHTIGT";
                else
                {
                    Console.WriteLine("Falsche Eingabe");
                    Console.WriteLine("Noch {0} Versuche",i-1 );
                }
            }
            return erg = "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!";
        }
    }
}

                

Lösung von: mattia mancina (Berufsfachschule für Informatik Bozen)

public class Passwortsperre {
	
	private static String password = "098765";
	static int fails = 0;
	
	public static void main(String[] args) {
		System.out.println("PASSWORT: ");
		checkPass(password);
	}
	
	public static void checkPass(String password){
		while(fails < 3){
			String userPass = new java.util.Scanner(System.in).nextLine();
			
			if(userPass.equals(password)){
				System.out.println("BERECHTIGT");
			}
			
			if(userPass.equals(password) == false){
				wrongPass();
			}
		}
	}
	
	public static void wrongPass(){
		fails++;
		
		if(fails < 3){
			System.out.println("Falsches Passwort. Es bleiben noch "+(3-fails)+" Versuche.");
		}
		
		if(fails == 3){
			youShallNotPass();
		}
	}
	
	public static void youShallNotPass(){
		System.out.println("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
	}
	
}
                

Lösung von: Name nicht veröffentlicht

namespace Uebung_Passwortsperre
{
    class Program
    {
        static void Main(string[] args)
        {
            int versuche = 3;
            int versucheuebrig;
            string passwd = "asdf";
            string input = "";
            Console.WriteLine("Bitte geben Sie das Passwort ein:");
            for (int i = 1; i <= 3;i++ )
            {
                input = Console.ReadLine();
                if (input == passwd)
                {
                    Console.WriteLine("BERECHTIGT");
                    break;
                }
                else
                {
                    versucheuebrig = versuche - i;
                    Console.WriteLine("Falsches Passwort, sie haben noch {0} Versuche.",versucheuebrig);
                }
            }
            if (input != passwd)
            {
                Console.WriteLine("\nKONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
                Console.ReadKey();
            }
            else
            {
                Console.ReadKey();
            }
        }
    }
}
                

Lösung von: Loris Leuenberger (BiCT AG)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
	char passw[]={"098765"};
	char eingabe[7];
	int count=3,vergl;
	int i;
	
	while(count>0)
	{
		//Passwort-Eingabe
		printf("\nBitte geben Sie das Passwort ein: ");			
		fgets(eingabe, 7, stdin);
		fflush(stdin);
		//Vergleich des Passwort-Strings
		vergl=strcmp(passw,eingabe);							
		
		if(vergl==0)											
		{
			printf("\nBERECHTIGT\n\n");
			return EXIT_SUCCESS;
		}
		count--;
		//Fehlerausgabe 
		if(count==0)					
			{
				printf("\nKONTO GESPERRT!!\n\n");
				return EXIT_FAILURE;
			}
		printf("\nNoch %d Versuche!!",count);
	}

	
return EXIT_SUCCESS;	
}
                

Lösung von: Florian Hofinger (FH Salzburg AT)

/**
 * 2016-02-29
 * @author Sam Yiming Miao
 */
package ch.toastgott.programmieraufgaben;

import java.util.Scanner;

public class PasswordLock {
	public static void main(String[] args) {
		String password = "098765";
    	char ü = 0x00fc;
		Scanner sc=new Scanner(System.in);
		for (int attempts = 2; attempts >= 0; attempts--) {
			System.out.println("Geben Sie das Passwort ein: ");
			String input = sc.next();
			if (input.equals(password)) {
				System.out.println("BERECHTIGT");
				break;
			} else {
				if (attempts == 0) {
					System.out.println("KONTO GESPERRT: Anzahl der Versuche überstritten");
				} else {
					System.out.print("Das Passwort ist falsch und Sie haben noch ");
					if (attempts == 1) {
						System.out.println("1 Versuch " + ü + "brig.");
						System.out.println("");					
					} else {
						System.out.println("2 Versuche " + ü + "brig.");
						System.out.println("");
					}
				}
			}
		}
	}
}
                

Lösung von: Sam Yiming Miao (Schule ist gut genug)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner s = new Scanner(System.in);
		for(int i=0; i<=3; i++){
			System.out.println("Bitte den PIN eingeben:");
			String pw = s.next();
			if(pw.equals("098765")){
				System.out.println("BERECHTIGT!");
				break;
			}else if(i == 3){
				System.out.println("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
			}else{
				System.out.println("Passwort falsch!\n" + (3 - i) + " Versuche verbleiben.");
			}
		}
		
	}

}

                

Lösung von: Thomas Willberger ()

1.Datei: passwort.php

<?php
session_start()
?>

<html>
<body>
Passwort bitte hier eingeben: <br>
<form action="passwortsperre.php" method="post">
    <input type="number" name="pin" /> <br>
    <input type="submit" value="Bestätigen" /><input type="reset" value="Zurücksetzen" />
</form>
</body>
</html>



2. Datei: passwortsperre.php


<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<?php



if (!isset($_SESSION["xx"]))
{
    $x = 3;
}
else{
    $x = $_SESSION["xx"];
}

$_SESSION["xx"] = $x;

if ($_POST["pin"] == "098765" && $_SESSION["xx"] > 0 )
{
    echo "Bestätigt!";

}
else if ($_SESSION["xx"] <= 0)
{
    echo "Konto gesperrt";
}
else
{
    echo "noch " . $_SESSION["xx"] . " Versuche übrig";
    $x--;
    $_SESSION["xx"] = $x;
}
echo "<br>";
echo "<a href='passwort.php'>Zurück zur PIN Eingabe</a>";

?>

</body>
</html>
                

Lösung von: Maik Scheiermann (Powercloud GmbH)

def check_pw():
	passwort = "098765"
	counter = 3
	
	while (counter > 0):
		inp = input("Bitte Passwort eingeben: ")
		
		if passwort == inp:
			print("BERECHTIGT")
			return
		else:
			counter -= 1
			print("Falsches Passwort - Noch moegliche Versuche: ", counter)
	
	print("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!")

check_pw()

                

Lösung von: Ibrahim Hamade (Robert-Koch-Gymnasium)

Passwort = "098765"

Versuche = 3

while Versuche !=0:
    Eingabe = raw_input("Bitte geben Sie das Passwort ein:")
    if Eingabe == Passwort:
        print("BERECHTIGT")
        exit ()
    else:
        Versuche -=1
        Versuch2 = raw_input("Passwort falsch, noch zwei Verusch:")
        if Versuch2 == Passwort:
            print("BERECHTIGT")
            exit ()
        else:
            Versuche -=1
            Versuch3 = raw_input("Passwort falsch, noch ein Verusch:")
            if Versuch3 == Passwort:
                print("BERECHTIGT")
                exit ()
            else:
                Versuch4 = raw_input("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN")
                

Lösung von: La Ku ()

public class Passwortsperre {
	
	private static int count = 3;

	public static void main(String[] args) {
		createWindow();
	}

	public static void createWindow() {
		JFrame frame = createFrame();
		JPanel panelOne = createFirstPanel();
		JPanel panelTwo = createSecondPanel();
		JTextField input = new JTextField(30);
		JLabel wrongPassword = new JLabel("          ");
		wrongPassword.setForeground(Color.RED);
		JButton button = new JButton("Login");
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				String password = "098765";

				if (count > 1) {
					if (input.getText().equals(password)) {
						panelTwo.removeAll();
						panelTwo.add(new JLabel("BERECHTIGT!"));
						panelOne.setVisible(false);
						panelTwo.setVisible(true);
						frame.add(panelTwo);
					} else {
						count--;
						wrongPassword.setText("Falsches Passwort! Noch " + count + " Versuche!");
					}
				} else {
					panelTwo.removeAll();
					panelTwo.add(new JLabel("KONTO GESPERRT: ANZAHL"));
					panelTwo.add(new JLabel("PASSWORTVERSUCHE ÜBERSCHRITTEN!"));
					panelOne.setVisible(false);
					panelTwo.setVisible(true);
					frame.add(panelTwo);
				}
			}
		});

		panelOne.add(input);
		panelOne.add(new JLabel("          "));
		panelOne.add(button);
		panelOne.add(new JLabel("          "));
		panelOne.add(wrongPassword);
		frame.add(panelOne);
		frame.pack();
		frame.setVisible(true);
	}

	public static JFrame createFrame() {
		JFrame frame = new JFrame();
		frame.setTitle("Passwortsperre");
		frame.setResizable(false);
		frame.setSize(new Dimension(350, 200));
		frame.setMinimumSize(new Dimension(0, 120));
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		return frame;
	}

	public static JPanel createFirstPanel() {
		JPanel panel = new JPanel();
		panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

		return panel;
	}

	public static JPanel createSecondPanel() {
		JPanel panel = new JPanel();
		panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

		return panel;
	}
}
                

Lösung von: Linus Götz (Lichtenberg-Gymnasium Cuxhaven)

var x = prompt("CODE:")
if (x == "098765") {
	alert("BERECHTIGT");
} else {
	x = prompt("Try again, 2 more attempts");
		if (x == "098765") {
		alert("BERECHTIGT");
	} else {
		x = prompt("Try again, 1 more attempt");
		if (x == "098765") {
		alert("BERECHTIGT");
	} else {
		alert("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
    }
    }
}
                

Lösung von: Irene Strauß (Liceo Scientifico, Bruneck)

**************************************************************************
*Hinweis für diese Lösung wird eine Datenbanktabelle benötigt.
**************************************************************************


REPORT PASSWORT.

*************************************************************************************************
*Eingabemaske
*************************************************************************************************

SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: lv_eing TYPE string.
SELECTION-SCREEN: END   OF LINE.



*************************************************************************************************
*Typisierungen
*************************************************************************************************

DATA: lt_table TYPE TABLE OF  PW_TEST1,
      lv_fehlv TYPE          int4.

FIELD-SYMBOLS:
      <fs_feld> TYPE PW_TEST1.



*************************************************************************************************
*Prüfung der Eingabe
*************************************************************************************************

AT SELECTION-SCREEN.

IF lv_eing IS INITIAL.

    MESSAGE 'Bitte geben Sie das Passwort ein.' TYPE 'E'.

ENDIF.



*************************************************************************************************
INITIALIZATION.
*************************************************************************************************



*************************************************************************************************
*Prüfung des eingebenen Passworts
*************************************************************************************************

START-OF-SELECTION.


SELECT ID Fehlversuche FROM PW_Test1 INTO CORRESPONDING FIELDS OF TABLE lt_table
WHERE ID = 1.

LOOP AT lt_table ASSIGNING <fs_feld>.

   lv_fehlv = <fs_feld>-Fehlversuche.

ENDLOOP.



IF lv_fehlv = 5.

    WRITE:/'KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!'.

ELSE.

    IF lv_eing = '098765'.

        WRITE:/ 'Berechtigt.'.

    ELSE.

        SELECT ID Fehlversuche FROM PW_Test1 INTO CORRESPONDING FIELDS OF TABLE lt_table
        WHERE ID = 1.

        LOOP AT lt_table ASSIGNING <fs_feld>.

            lv_fehlv = <fs_feld>-Fehlversuche.

        ENDLOOP.

        lv_fehlv               = lv_fehlv + 1.
        <fs_feld>-Fehlversuche = lv_fehlv.

        UPDATE PW_test1 FROM <fs_feld>.

    ENDIF.

ENDIF.
                

Lösung von: Name nicht veröffentlicht

Private Sub Workbook_Open()
Dim passwort As String
Dim eingabe As String
Dim i As Integer
i = 3
passwort = "098765"

Do While eingabe <> passwort
If i = 0 Then
    MsgBox ("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!")
    Exit Sub
End If


eingabe = InputBox("Bitte geben sie das Passwort ein")

If eingabe <> passwort Then
    i = i - 1
    MsgBox ("Das Passwort war falsch! " & "Sie haben noch " & i & " Versuche")
End If
Loop

If eingabe = passwort Then
    MsgBox ("Berechtigt")
End If
End Sub

                

Lösung von: Ozan Gümüstas ()

Verifikation/Checksumme:

Testen Sie mit

a) dem richtigen Passwort bei der ersten Eingabe,

b) dem richtigen Passwort erst bei der zweiten Eingabe

c) dem richtigene Passwort erst bei der dritten Eingabe

d) drei falsche Eingaben.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Mittel
Webcode: 67qe-ch04
Autor: Philipp Gressly Freimann (SANTIS Training AG)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen