• 随机产生字母a--z, A-Z 的任意组合


    VERSION 1.0    引自: http://www.coderanch.com/t/134491/Security/generating-secure-tokens

    package demo;

    import java.util.Random;
      
    /*
     * This code is a discussion of an opinion in a technical forum.
     * You may develope ideas from this code. You may not use it directly.
     */
      
    public class DM
    {
        String getRandomIdentifier(int length) throws Exception
        {
            final int limitingValue = 64;// Whatever you decide, not me.
            if(length < limitingValue)
            {
                try
                {
                    // The first step is to get a filename generator
                    char lowerBound =   'a';
                    char upperBound =   'z';
                    Random randomCharacterGenerator = new Random();
                    // Then get some characters
                    char[] identifierBuffer = new char[length];//
                    int index = identifierBuffer.length;//
                    final int numericLowerBound = (int) lowerBound;
                    final int numericUpperBound = (int) upperBound;
                    final int range = numericUpperBound - numericLowerBound;//
                    do
                    {
                        // recoded in mesage edit, original defective
                        int getOne = randomCharacterGenerator.nextInt(range);
                        int next = numericLowerBound + getOne;
                        identifierBuffer[--index] = (char) next;
                    }
                    while(index > 0x00000000);
                    return new String(identifierBuffer);//
                }
                catch(ArrayIndexOutOfBoundsException aioobe)
                {
                    System.out.println(aioobe.getMessage());
                }
            }
            else
            {
                throw new Exception("Contact system administrator.");//
            }
            return null;
        }
    }

    VERSION 2.0    改进型:

    package token;

    import java.util.Random;

    public class DM {
        public static void main(String[] args) throws Exception {
            System.out.println("1==97===:" + (int) 'a');
            System.out.println("2==122===:" + (int) 'z');
            System.out.println("3==65===:" + (int) 'A');
            System.out.println("4===90==:" + (int) 'Z');
            DM mn = new DM();
            System.out.println(mn.getRandomIdentifier(26));
        }

        String getRandomIdentifier(int length) throws Exception {
            final int limitingValue = 164;// Whatever you decide, not me.
            if (length < limitingValue) {
                try {
                    // 26个小写+26个大小 = 52 字母
                    final int range = 52;//
                    char[] charStr = new char[range];
                    int j = 0;
                    // A=65, z =122
                    for (int i = 65; i <= 122; i++) {
                        // Z--a 之间的跳过
                        if (i > 90 && i < 97) {
                            continue;
                        }
                        charStr[j] = (char) i;   // 这里将保存52个大小字母
                        j++;
                    }

                       // 这里其实可以将 0 - 9 的数字也添加进去
                    Random randomCharacterGenerator = new Random();
                    // Then get some characters
                    char[] identifierBuffer = new char[length];//
                    int index = identifierBuffer.length;//
                    do {
                        // 产生0至51 共52个随机数,用于索引字母数组
                        int getOne = randomCharacterGenerator.nextInt(range);
                        identifierBuffer[--index] = charStr[getOne];
                    } while (index > 0x00000000);
                    return new String(identifierBuffer);//
                } catch (ArrayIndexOutOfBoundsException aioobe) {
                    System.out.println(aioobe.getMessage());
                }
            } else {
                throw new Exception("Contact system administrator.");//
            }
            return null;
        }

    }

  • 相关阅读:
    微服务概述
    Airflow 配置celery+rabbitmq和celery+redis
    CentOS7安装Airflow
    Python如何import其它.py文件及其函数
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    CentOS7安装MySQL
    Hadoop完全分布式环境下,DataNode进程正常启动,但是网页上不显示DataNode节点
    <一> windbg简介
    几个资料下载网站
    使用VS2012 C++ 进行单元测试
  • 原文地址:https://www.cnblogs.com/dragonflyyi/p/4403579.html
Copyright © 2020-2023  润新知