zoukankan      html  css  js  c++  java
  • RandomValueStringGenerator

    package org.springframework.security.oauth2.common.util;
    
    import java.security.SecureRandom;
    import java.util.Random;
    
    /**
     * Utility that generates a random-value ASCII string.
     *
     * <p>
     * @deprecated See the <a href="https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide">OAuth 2.0 Migration Guide</a> for Spring Security 5.
     *
     * @author Ryan Heaton
     * @author Dave Syer
     */
    @Deprecated
    public class RandomValueStringGenerator {
    
        private static final char[] DEFAULT_CODEC = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                .toCharArray();
    
        private Random random = new SecureRandom();
    
        private int length;
    
        /**
         * Create a generator with the default length (6).
         */
        public RandomValueStringGenerator() {
            this(6);
        }
    
        /**
         * Create a generator of random strings of the length provided
         * 
         * @param length the length of the strings generated
         */
        public RandomValueStringGenerator(int length) {
            this.length = length;
        }
    
        public String generate() {
            byte[] verifierBytes = new byte[length];
            random.nextBytes(verifierBytes);
            return getAuthorizationCodeString(verifierBytes);
        }
    
        /**
         * Convert these random bytes to a verifier string. The length of the byte array can be
         * {@link #setLength(int) configured}. The default implementation mods the bytes to fit into the
         * ASCII letters 1-9, A-Z, a-z .
         * 
         * @param verifierBytes The bytes.
         * @return The string.
         */
        protected String getAuthorizationCodeString(byte[] verifierBytes) {
            char[] chars = new char[verifierBytes.length];
            for (int i = 0; i < verifierBytes.length; i++) {
                chars[i] = DEFAULT_CODEC[((verifierBytes[i] & 0xFF) % DEFAULT_CODEC.length)];
            }
            return new String(chars);
        }
    
        /**
         * The random value generator used to create token secrets.
         * 
         * @param random The random value generator used to create token secrets.
         */
        public void setRandom(Random random) {
            this.random = random;
        }
        
        /**
         * The length of string to generate.
         * 
         * @param length the length to set
         */
        public void setLength(int length) {
            this.length = length;
        }
    
    }
  • 相关阅读:
    ~随笔A007~html中input输入框的字数限制、同步input的输入内容至div中
    ~随笔A006~微信扫码的授权、用户绑定、关注公众号、消息反馈
    【CV】实验二:特征检测与匹配
    【笔记】DLX算法及常见应用
    【笔记】和算法无关的那些东东
    【笔记】康拓展开&逆康拓展开
    【笔记】离散对数
    【笔记】Shift-And算法&Shift-OR算法
    【模板】中缀表达式求值
    【笔记】数据库系统
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/13262405.html
Copyright © 2011-2022 走看看