【问题标题】:Generate unique id with 6 of length生成长度为 6 的唯一 ID
【发布时间】:2014-12-23 22:48:40
【问题描述】:

我需要生成一个限制为 6 个块的唯一 ID。该 id 应该包含大写字母数字

我该怎么做?我想在使用日期,但我失败了。

更多细节...

该 ID 不需要重复,但应该单独生成,而最后一个序列中没有碱基。 我可以用任何语言做到这一点。

【问题讨论】:

  • 你想用什么语言来编程?不能只使用 GUID 的唯一部分吗?
  • 这个唯一id有什么要求?你能简单地通过集合 {000000, 000001,..., 00000A, ..., ZZZZZZ} 吗?

标签: logic unique


【解决方案1】:

我写了一篇博文来生成一个强 SQL Server 密码。您可以根据需要进行调整。如需更好格式的博文here.

我们的密码必须每 90 天更改一次。我想自动化这个,听起来很容易做到,但没那么容易。为什么?因为密码有很多规则。

首先,我必须将它存储在 web.config 中。所以没有 XML 特殊字符。

quot " 
amp & 
apos ' 
lt < 
gt >

接下来,如果在 OLE DB 或 ODBC 连接字符串中使用,密码不能包含以下字符:[] {}() , ; ? * ! @。

最后,强密码必须包含以下至少三个类别的字符:

English uppercase characters (A through Z)
English lowercase characters (a through z)
Base 10 digits (0 through 9) 
Nonalphabetic characters (for example: !, $, #, %)

因此,牢记所有这些规则,我创建了一个简单的类。我可以打电话

public class PasswordGenerator
{
    private static string CHARS_LCASE = "abcdefgijkmnopqrstwxyz";
    private static string CHARS_UCASE = "ABCDEFGHJKLMNPQRSTWXYZ";
    private static string CHARS_NUMERIC = "23456789";
    private static string CHARS_SPECIAL = "*-+_%/";
    private static string CHARS_ALL = CHARS_LCASE + CHARS_UCASE + CHARS_NUMERIC + CHARS_SPECIAL;

    public static string GeneratePassword(int length)
    {
        char[] chars = new char[length];
        Random rand = new Random();

        for (int i = 0; i < length; i++)
        {
            switch (i)
            {
                case 0:
                    chars[i] = CHARS_LCASE[rand.Next(0, CHARS_LCASE.Length)];
                    break;
                case 1:
                    chars[i] = CHARS_UCASE[rand.Next(0, CHARS_UCASE.Length)];
                    break;
                case 2:
                    chars[i] = CHARS_NUMERIC[rand.Next(0, CHARS_NUMERIC.Length)];
                    break;
                case 3:
                    chars[i] = CHARS_SPECIAL[rand.Next(0, CHARS_SPECIAL.Length)];
                    break;

                default:
                    chars[i] = CHARS_ALL[rand.Next(0, CHARS_ALL.Length)];
                    break;
            }
        }

        return new string(chars);
    }
}

所以现在我只是简单地将其称为新密码:

PasswordGenerator.GeneratePassword(13)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2014-02-18
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多