ASP.net (GUID なし) で固定長のランダム パスワードを生成する方法は? ランダムなパスワードを生成した後、指定されたユーザーにパスワードを電子メールで送信する必要があります。
6 に答える
名前空間には、System.Web.Security
パスワードを生成する方法があります。
string pw = Membership.GeneratePassword(8, 1);
最初のパラメーターでパスワードの長さを指定できます。2つ目は、生成されたパスワードに含まれる英数字以外の文字の最小数を示すことです。
Membership.GeneratePassword メソッドを使用するだけです
// Generate a new 12-character password with 1 non-alphanumeric character.
string password = Membership.GeneratePassword(12, 1);
次に、次のリンクを参照して、パスワードを MailMessage Body として電子メールで送信します。
SMTP 経由で C# を使用してメールを
送信する Gmail 経由で .NET でメールを送信する
web.config のメール設定
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="from@yourdomain.com">
<network host="smtp server addresss" userName="username" password="password"
defaultCredentials="false" port="xxx" enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
次に、次のコードを使用してメール配信を高速化します。gmail smtpサーバーなどを使用するようにメールを構成できますが、すべてはあなた次第です。
try
{
MailMessage mailMessage = new System.Net.Mail.MailMessage();
mailMessage.To.Add(userEmailAddress);
mailMessage.Subject = "Subject";
mailMessage.Body = "your password should be in this section";
var smtpClient = new SmtpClient();
smtpClient.Send(mailMessage);
return "Mail send successfully";
}
catch (SmtpException ex)
{
return "Mail send failed:" + ex.Message;
}
独自のパスワードを作成したい場合は、Google でこれに関する多くのヘルプがあります。
方法: ランダム パスワードを生成する (C#/VB.NET)
C# を使用してランダム パスワードを生成する C#
で乱数と文字列を生成する
C# ランダム パスワード ジェネレーター
ランダム パスワード生成
この助けを願っています。
このドキュメントで提供されているランダム関数を使用します:http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx
私は通常、文字配列または文字列を作成します( "abcdefg ..."。ToCharArray();)。このように選択されているので、ランダムな文字が生成されることはありません。
これは珍しい機能ではありません。特に、管理者が1人の小グループ(教師/生徒の状況)ではそうです。この機能は、一方向に暗号化されたパスワードの通常の状況では望ましくないと言います。
Membership.GeneratePassword メソッドを使用したくない場合は、これで十分です。
乱数を生成
public int RandomNumber(int min, int max)
{
try
{
Random random = new Random();
return random.Next(min, max);
}
catch (Exception)
{
throw;
}
}
ランダムな文字列を生成
public string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch;
for (int i = 0; i < size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
if (lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
組み合わせて一意のパスワードを取得
public string GetPassword()
{
StringBuilder builder = new StringBuilder();
builder.Append(RandomString(4, true));
builder.Append(RandomNumber(1000, 9999));
builder.Append(RandomString(2, false));
return builder.ToString();
}
Gmail SMTP 経由でパスワードを送信
public void SendUsernamePassword(string Email,string UserName,string Password)
{
MailMessage mM = new MailMessage();
mM.From = new MailAddress("YourGmailAccount@gmail.com");
mM.To.Add(Email);
mM.Subject = "Your Username and Password.";
mM.Body = "Your Username and Password is:<br/>Username:" + UserName+ "<br/>" + "Password:" + Password;
mM.IsBodyHtml = true;
mM.Priority = MailPriority.High;
SmtpClient sC = new SmtpClient("smtp.gmail.com");
sC.Port = 587;
sC.Credentials = new NetworkCredential("YourGmailAccount@gmail.com", "YourPassword");
//sC.EnableSsl = true;
sC.EnableSsl = true;
sC.Send(mM);
}
関連する固有のリスクと、アプリケーションに不要な複雑さが追加されるため、電子メールでパスワードを送信しないことをお勧めします。アプリケーションの最も自然な場所にパスワード作成システムを直接実装する方がよいでしょう。「最も自然なスポット」の曖昧さを実感していますが、これは用途が異なればデザインの理想も異なるためです。また、ここでは、通常よりも広い意味で「アプリケーション」を使用しています。ユーザー アカウントを持つ Web サイトでパスワードを作成する自然な場所の例は、アカウント管理、ログイン、および登録ページです。パスワードジェネレーターの目的が、ユーザーが変更する一時的なパスワードを提供することである場合は、登録時にユーザーにパスワードを決定させることをお勧めします。アプリケーションのニーズを十分に検討した後でもパスワード ジェネレータが必要な場合は、目的の文字セットへのコンバータにパイプされた乱数ジェネレータを使用できます。また、特に簡単な質問の場合は、フォーラムで質問する前に、質問のトピックに関する情報を少なくともインターネットで検索することをお勧めしますが、そうでない場合でも、お気に入りの検索エンジンの最初の数ページ。問題の解決策を簡単に見つけることができれば、せいぜいあなたを助けてくれた友好的な人々の時間を無駄にすることになり、最悪の場合、友好的でない答え、忙しい人々からの理解しにくい答え、粗雑な助けを得ることになります.経験の浅いユーザーから、または RTFM から。お気に入りの検索エンジンやチュートリアル サイトをざっと検索しても解決策が見つからない場合は、5 分ほど自分のニーズが何であるかを熟考した後、ぜひ質問してください。独自の調査を行う前に尋ねると、思いやりがないように見えるリスクが高まります。
私の実際の答えの要約として
- 乱数発生器
- 目的の文字セットに型キャストします。それはとても簡単です。
(好みの言語よりも複雑な場合は、好みの言語を再検討してください:p)