fb:porticula NoPaste
Passwortsicherheit bewerten, Take 2
Uploader: | Mao |
Datum/Zeit: | 17.10.2007 22:50:34 |
Declare Function ZeichenInString(ByVal s As String, ByVal iStart As Byte, _
ByVal iEnde As Byte) As Integer
Declare Function PasswortSicherheit(ByVal sPasswort As String) As Integer
Dim As String s
Do
Input "PW: ", s
Print PasswortSicherheit(s)
Loop Until s="quit"
Function ZeichenInString(ByVal s As String, ByVal iStart As Byte, _
ByVal iEnde As Byte) As Integer
Dim As Integer iZeichen
For i As Integer=0 To Len(s)-1
If (s[i]>=iStart) And (s[i]<=iEnde) Then
iZeichen+=1
End If
Next i
Function=iZeichen
End Function
Function PasswortSicherheit(ByVal sPasswort As String) As Integer
Dim As Integer iGrBst, iKlBst, iSonder, iZahlen, iGrBstPr, iKlBstPr, _
iZahlenPr, iSonderPr, iLaengPw, iWertung
iLaengPw=Len(sPasswort)
If iLaengPw>0 Then
iGrBst=ZeichenInString(sPasswort, Asc("A"), Asc("Z"))
iKlBst=ZeichenInString(sPasswort, Asc("A"), Asc("Z"))
iZahlen=ZeichenInString(sPasswort, Asc("0"), Asc("9"))
iSonder=iLaengPw-iGrBst-iKlBst-iZahlen
iGrBstPr=(iGrBst*100)/iLaengPw
iKlBstPr=(iKlBst*100)/iLaengPw
iZahlenPr=(iZahlen*100)/iLaengPw
iSonderPr=(iSonder*100)/iLaengPw
' für jedes zusätzliche Zeichen nach dem 7. einen Punkt
' alternativ, d.h. wenn weniger als 7 Zeichen, Abzug
' (warum 7? 6 erscheint mir ein bisschen wenig, 8 ein bisschen hart. ;)
iWertung=iLaengPw-7
' für jede "Zeichenart" einen Punkt
If iGrBst>0 Then iWertung+=1
If iKlBst>0 Then iWertung+=1
If iZahlen>0 Then iWertung+=1
If iSonder>0 Then iWertung+=1
' für Ausgewogenheit der Anteile der Zeichenarten jeweils einen Punkt
If iGrBstPr>20 Then iWertung+=1
If iKlBstPr>20 Then iWertung+=1
If iZahlen>10 Then iWertung+=1
If iSonderPr>10 Then iWertung+=1
' Werte trimmen: nur Werte zwischen 0 und 10 sind zulässig
If iWertung<0 Then iWertung=0
If iWertung>10 Then iWertung=10
End If
Function=iWertung
End Function