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;
        }
    
    }
  • 相关阅读:
    让弹幕给 PPD 生个孩子
    circle_clock 简单canvas实现圆弧时钟
    JS练习实例--编写经典小游戏俄罗斯方块
    就这样,我把4000张美女和帅哥照片下载本地了
    移动端开发的兼容问题(自我总结篇)
    css两栏布局、圣杯布局、双飞翼布局
    浅析Node与Element
    那是我在夕阳下的code
    flex布局中父容器属性部分演示效果
    关于CDN那些事
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/13262405.html
Copyright © 2011-2022 走看看