zoukankan      html  css  js  c++  java
  • 随机产生字母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;
        }

    }

  • 相关阅读:
    SIP头域说明
    android.os.NetworkOnMainThreadException异常
    "Only the original thread that created a view hierarchy can touch its views"引发的思考_Handler的使用
    sip命令与音视频rtp通话完整流程分析
    在Windows下搭建Android开发环境(摘自百度经验)
    jquery dialog 打开的时候自动聚焦解决方法
    对于数组(字符串)slice方法的总结
    SWIFT语言中的泛型编程 【GENERIC】【PART 2】
    手动调用playground的XCPCaptureValue展示Swift过程数据
    Swift语言相关资源贴
  • 原文地址:https://www.cnblogs.com/dragonflyyi/p/4403579.html
Copyright © 2011-2022 走看看