- 하나 이상의 소문자가 포함되어 있습니다.
- 최소한 하나의 숫자를 포함하며 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있습니다.
- 여기에는 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있는 특수 문자(영숫자가 아닌 문자, 즉 기호)가 하나 이상 포함되어 있습니다.
- 사용자 ID에는 두 개 이상의 문자 시퀀스가 포함되어 있지 않습니다.
- 이는 사용자 ID의 반전이 아니며, 사용자 ID의 반전을 포함하지도 않습니다.
- 이전 선택 항목이나 지정된 비밀번호의 세 개 이상의 문자 시퀀스를 포함하지 않습니다.
- 비밀번호에 2개 이상의 문자(예: a39tzb39r)가 두 번 이상 포함되지 않습니다.
- 3개 이상의 반복되거나 연속된 숫자 또는 문자의 시퀀스를 포함하지 않습니다(예: ax222rm, ct15mnoRx).
개별적으로 테스트할 수 있는 명령을 알려주세요.
답변1
정규식으로 해보세요
1- 하나 이상의 소문자가 포함되어 있습니다.
[AZ]
2- 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있는 숫자가 하나 이상 포함되어 있습니다.
.[0-9].
3- 첫 번째와 마지막 위치를 제외한 모든 위치에 있을 수 있는 특수 문자 ID가 하나 이상 포함되어 있습니다.
.[^a-z0-9A-Z].
4- 사용자 ID에 두 개 이상의 문자가 포함되어 있지 않습니다.
ID의 2자마다(하지만 ID가 숫자이므로 사용자 이름(전체 이름과 비교)을 의미하는 것 같습니다) ((?!$U).)
5- 사용자 ID의 반전이 아니며 사용자 ID의 반전을 포함하지도 않습니다.
U=&(whoami | tac) ((?!$U).)
6- 이전 선택 항목이나 지정된 비밀번호에서 3개 이상의 문자가 연속적으로 포함되어 있지 않습니다.
#4와 동일
7- 비밀번호에는 2개 이상의 문자 시퀀스가 두 번 이상 포함되어서는 안 됩니다(예: a39tzb39r). 8- 3개 이상의 반복되거나 연속된 숫자 또는 문자의 시퀀스를 포함하지 않습니다(예: ax222rm, ct15mnoRx).
(.{2,})\1
그런 다음 그것들을 하나로 합치십시오.
echo -n $PASS | grep -P '[az]' | grep -P '.[^a-z0-9A- Z].' | grep -vP "((?!$U).)|$ETC"
$Us 확장은 for 루프이므로 알아낼 수 있어야 합니다... 하지만 언급한 설명처럼 안전한 비밀번호에 대한 유일한 올바른 테스트는 14자 이상이라는 것입니다. ) )