時間ごとに変更されるユーザー名を生成
ASPを作っています.NETのプロジェクトは、スーパー管理者のアカウントを残したいです.
このスーパー管理者のユーザー名が固定されている場合(administratorなど)、安全ではありません.そこで、次のように長い文字列のユーザー名を生成し、1時間に1回変更したいと考えています.
ユーザー名の構成:年+SuperAdmin+合計日数+時間àでMD 5暗号化を行います.そのため、ユーザー名は1時間ごとに変化します.
このスーパー管理者のユーザー名が固定されている場合(administratorなど)、安全ではありません.そこで、次のように長い文字列のユーザー名を生成し、1時間に1回変更したいと考えています.
ユーザー名の構成:年+SuperAdmin+合計日数+時間àでMD 5暗号化を行います.そのため、ユーザー名は1時間ごとに変化します.
using System;
using System.Text;
using System.Security.Cryptography;
namespace CKI.JsonServer.Models
{
public class SuperAdministratorHelper
{
public static string GetName()
{
int year = DateTime.Now.Year;
int month = DateTime.Now.Month;
int day = DateTime.Now.Day;
int hour = DateTime.Now.Hour;
int SumDays = GetDayOfYear(month) + day;
if (month > 2)
{
if ((year % 4 == 0) && (year % 100 != 0) || year % 400 == 0)
{
SumDays++;
}
}
string sa = year + "SuperAdmin" + SumDays.ToString("#000") + hour.ToString("#00");
return MD5(sa);
}
public static string MD5(string str)
{
byte[] result = Encoding.Default.GetBytes(str);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result);
string strMD5 = BitConverter.ToString(output).Replace("-", "");
return strMD5;
}
private static int GetDayOfYear(int month/* :1 12*/)
{
int SumDays = 0;
if (month <= 0) return SumDays;
switch (month - 1)
{
case 11: SumDays += 30; break;
case 10: SumDays += 31; break;
case 9: SumDays += 30; break;
case 8: SumDays += 31; break;
case 7: SumDays += 31; break;
case 6: SumDays += 30; break;
case 5: SumDays += 31; break;
case 4: SumDays += 30; break;
case 3: SumDays += 31; break;
case 2: SumDays += 28; break;
case 1: SumDays += 31; break;
default: break;
}
SumDays += GetDayOfYear(month - 1);
return SumDays;
}
}
}