生成一个“每小时变化一次的”用户名

在做一个ASP.NET的项目,想留一个超级管理员的账号。

如果这个超级管理员的用户名是固定的(例如administrator),这样会不安全;所以想用下面的这种方式生成一个长字符串的用户名,而且每小时变化一次。

用户名的组成:年+SuperAdmin+总天数+小时à进行MD5加密。因此,用户名每个小时都会变化。

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;
        }
    }
}
时间: 2024-08-10 14:57:25

生成一个“每小时变化一次的”用户名的相关文章

ZeroMQ接口函数之 :zmq_curve_keypair - 生成一个新的CURVE 密钥对

ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_curve_keypair zmq_curve_keypair(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_curve_keypair - 生成一个新的CURVE 密钥对 Synopsis int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key); Description 函数zmq_curve_keypair

python- 按照日期格式(xxxx-xx-xx)每日生成一个文件

请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2013-09-23.log, 并且把磁盘的使用情况写到到这个文件中. #!/usr/bin/env python #!coding=utf-8 import time import os new_time = time.strftime('%Y-%m-%d') //time.strftime()可以用来获得当前时间,可以将时间格式化为字符串 disk_status = os.popen('df -h').read

jQuery生成一个DIV容器,ID是&quot;rating&quot;.

我们需要一些服务器端代码,这个例子中用到了一个PHP文件,读取rating参数然后返回rating总数和平均数.看一下rate.php代码.虽然这些例子也可以不使用AJAX来实现,但显示我们不会那么做,我们用jQuery生成一个DIV容器,ID是"rating". $(document).ready(function() {        // generate markup        var ratingMarkup = ["lease rate: "]; 

如何使用Maven的archetype快速生成一个新项目(解决生成项目目录不完整问题)

Maven的archetype Plugin可能大家都听过,但不一定都能很好地用好它.缺省地如果你使用 mvn archetype:generate 会从maven的Repository里查找所有支持的arche types,大概有500~600个.正因为是太多了,所以查找起来很是不方便. 其实平时常用的arche type也就那么几个.像我会用到的: 1.simple start 2. web app 3. Groovy basic 很自然的就会考虑,是不是能什么简便的方法只需要从这3个组成的

Qt的目录依赖问题----怎样生成一个绿色的Qt软件包

Qt的目录依赖问题----怎样生成一个绿色的Qt软件包 一.核心问题: 如果将编译好的Qt文件拷贝到任何目录下,作为一个绿色软件库来使用? 二.原理讨论 由于Qt在编译的时候将安装路径硬编码到了库文件中,这个问题似乎不太好解决.使用如下命令,可以查看到底有哪些路径: qmake -query 可得到类似的如下结果: QT_INSTALL_PREFIX:/usr/lib/qt4 QT_INSTALL_DATA:/usr/lib/qt4 QT_INSTALL_DOCS:/usr/share/doc/

[jQuery编程挑战]006 生成一个倒计时效果

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>生成一个倒计时效果</title> <style type="text/css"> body{ margin:0; padding:0; background: orange; width: 100%; height: 10

java 随机生成一个中文、判断某个string是否是中文以及打印出全部的中文

现在网上大多数用于判断中文字符的是 U+4E00..U+9FA5 这个范围是只是"中日韩统一表意文字"这个区间,但这不是全部,如果要全部包含,则还要他们的扩展集.部首.象形字.注间字母等等; 2E80-A4CF: 包含了中日朝部首补充.康熙部首.表意文字描述符.中日朝符号和标点.日文平假名.日文片假名.注音字母.谚文兼容字母.象形字注释标志.注音字母扩展.中日朝笔画.日文片假名语音扩展.带圈中日朝字母和月份.中日朝兼容.中日朝统一表意文字扩展A.易经六十四卦符号.中日韩统一表意文字.彝

随机生成一个数独

最近学习用Java编写GUI程序,感觉从做一个小东西入手最好,选择了编写一些小游戏开始,第一个为数独游戏. http://en.wikipedia.org/wiki/Sudoku 编写数独游戏第一步考虑的就是该如何生成一个原始的数独题目,要想生成数独题目最简单的办法就是先随机生成一个完整的数独,然后从中摘除一些数字,这样就可以生成一道数独题.所以需要考虑如何随机的生成一个完整的数独,这里考虑使用回溯法生成: 在数独的某个位置插入一个1~9的值 如果这个值能正常插入,则递归在下一个位置插入 如果这

js生成一个以零开头的八位数并且依次递增

条件:1八位数:2.以领开头:3.末尾要依次递增 <script type="text/javascript"> function RondomPass(number){ var arr = new Array; var arr1 = new Array("0","1","2","3","4","5","6","7"