Memberhip.GeneratePassword를 사용하여 알파 또는 숫자 만 포함 된 암호를 반환하려면 어떻게해야합니까? 기본 방법은 영숫자가 아닌 암호의 최소 수와 최대 수만을 보장합니다.회원 비밀번호 생성 영숫자 전용 비밀번호?
답변
string newPassword = Membership.GeneratePassword(15, 0);
newPassword = Regex.Replace(newPassword, @"[^a-zA-Z0-9]", m => "9");
이 정규 표현식은 숫자 문자 9
비밀번호의 무작위성이 상당히 떨어집니다. 권장하지 않습니다. –
@Matti "9"를 Random.Next (0, 9) 정수로 바꿀 수 있습니다. 영숫자가 아닌 문자를 일반적인 암호에 배치하는 것은 일반적으로 과도한 작업입니다. 단어를 사용하지 않는 무작위로 생성 된 암호는 많은 응용 프로그램에서 유용합니다. 이렇게하는 이유는 유용성입니다. 영숫자가 아닌 많은 문자는 일반 사용자가 쉽게 실수하거나 혼동 할 수 있으며 입력 할 수 없습니다. –
@Matti이 코드를 사용하면 승인 된 비영 문자의 하위 집합 만 삽입 할 수도 있습니다. 나는 많은 응용 프로그램에 대한 필요성을 보지 못합니다. –
으로 GUID를 생성하고 기초로 그것을 사용하는 것입니다 8 영숫자 암호를 얻을 수있는 간단한 방법을 모든 영숫자가 아닌 문자를 대체합니다 :
를string newPwd = Guid.NewGuid().ToString().Substring(0, 11);
newPwd = newPwd.Substring(0, 8) + newPwd.Substring(9, 2); // to skip the dash.
: 당신이 더 긴 암호가 필요하다면
string newPwd = Guid.NewGuid().ToString().Substring(0, 8);
, 단지 문자열을 사용하여 대시를 건너
첫 번째 문자가 알파인지 확인하려는 경우 (newPwd [0]> = '0'& & newPwd [0] < = '9')와 같이 필요하면 고정 된 문자열로 바꿀 수 있습니다.
다른 사람에게 도움이되기를 바랍니다. :-)
이것은 좋은 생각이 아닙니다. 하나는 가능한 문자 세트를 36으로 줄이는 것입니다 (36 대신). 다른 경우 guid는 반드시 임의적 인 것은 아니며 guid를 생성하는 방법에 따라 생성하는 비밀번호를 쉽게 예측할 수 있습니다. 나는 이것에 대한 더 많은 정보를 얻기 위해 guids가 어떻게 작동하는지 에릭 Lippert의 시리즈를 강력히 추천한다 : http://blogs.msdn.com/b/ericlippert/archive/2012/04/24/guid-guide-part-one.aspx –
나는 또한 GUID 방법을 선호 - 여기에 짧은 버전입니다 :
string password = Guid.NewGuid().ToString("N").Substring(0, 8);
효과적으로 Laura와 똑같은 정답. 아무 이유없이 문자열 형식이 지정됩니다 (효과가 없음). –
내가이 일을하는 방법이있을 수 있다는 것을 깨달았다. GUID 메서드는 대문자와 소문자가 섞이지 않는 것을 제외하고는 훌륭합니다. 제 경우에는 소문자 만 작성했습니다.
그래서 Regex를 사용하여 비 - 알파 (alphas)를 제거한 다음 결과가 필요한 길이로 부분 문자열을 만들기로 결정했습니다.
string newPassword = Membership.GeneratePassword(50, 0);
newPassword = Regex.Replace(newPassword, @"[^a-zA-Z0-9]", m => "");
newPassword = newPassword.Substring(0, 10);
원하는 암호 길이에 도달 할 때까지 암호를 생성하고 영숫자가 아닌 문자를 연결하려고 할 수도 있습니다.
public string GeneratePassword(int length)
{
var sb = new StringBuilder(length);
while (sb.Length < length)
{
var tmp = System.Web.Security.Membership.GeneratePassword(length, 0);
foreach(var c in tmp)
{
if(char.IsLetterOrDigit(c))
{
sb.Append(c);
if (sb.Length == length)
{
break;
}
}
}
}
return sb.ToString();
}
breigo의 솔루션과 비슷한 접근법이 있습니다. 아마도 그렇게 효과가 없지만 명확하고 짧음
string GeneratePassword(int length)
{
var password = "";
while (password.Length < length)
{
password += string.Concat(Membership.GeneratePassword(1, 0).Where(char.IsLetterOrDigit));
}
return password;
}
- 1. Asp.Net 회원 비밀번호 기호없이 재설정
- 2. ASP.NET 회원 사용자 비밀번호 분실
- 3. 비밀번호 및 이메일 확인
- 4. 비밀번호 암호화
- 5. 비밀번호 확인
- 6. 비밀번호 저장
- 7. 비밀번호 변경
- 8. 비밀번호 확인?
- 9. 상속 비밀번호
- 10. 비밀번호 확인
- 11. 비밀번호 암호화
- 12. Kohana에서 사용자 등록을위한 비밀번호 해시 생성
- 13. 잠금 정책 및 일회용 비밀번호
- 14. 회원 사용자를 만드는 동안 오류가 발생했습니다. "제공된 비밀번호 - 대답이 잘못되었습니다."
- 15. 비밀번호 텍스트 입력란에 별 대신 "비밀번호"를 표시하려면 어떻게해야합니까?
- 16. 이상한 입력 텍스트 및 입력 비밀번호 지우기 기본 입력 비밀번호
- 17. 비밀번호 필드를 $ _POST에 비워두면 비밀번호 필드를 어떻게 업데이트하지 않습니까?
- 18. 비밀번호 변경 비밀번호 변경 RegEx가 IE 7에서만 이상하게 검사 됨
- 19. Symfony sfGuardPlugin 비밀번호 복구
- 20. CakePHP의 비밀번호 문제
- 21. CruiseControl 사용자/비밀번호
- 22. 비밀번호 필드의 Jquery 기본값
- 23. Asp.net을 사용한 비밀번호 복구
- 24. 안드로이드에서 비밀번호 보안 방법
- 25. 웹에서 비밀번호 보내기
- 26. 환경 설정의 비밀번호
- 27. 분산 앱, 비밀번호 해시
- 28. 아이폰 앱 비밀번호 암호화
- 29. 아이폰에 비밀번호 저장하는 법?
- 30. 비밀번호 확인 jQuery 플러그인
왜이 작업을 수행 하시겠습니까? 특수 문자는 비밀번호에 포함 된 것이 좋습니다. 내 이해력을 초월한 기괴한 이유로 당신이 정말로 하나를 원한다면 GeneratePassword를 사용하지 않고 직접 생성하는 방법을 작성하십시오. –
한 가지 이유는 생성 된 암호가 실제로 세계화가 용이하지 않기 때문입니다. 또 다른 이유는 애플리케이션을 사용하는 CEO가 못 생기면서도 보안이 유지되는 암호를 사용하여 화를 냈고 암호를 변경했다고 말했습니다. – Greg
또는 내 경우에는 구두점이 내가 호출하는 API에서 서버 오류를 일으키는 것입니다. – Drew