如何让java securityRandom 生成的盐 只包含字母和数字?

 手机用户敬怡 发布于 2022-11-26 19:34
 public static void getNextSalt() {
    Random RANDOM = new SecureRandom();
    byte[] salt = new byte[16];
    RANDOM.nextBytes(salt);
    String str = new String(salt,"UTF-8");
    System.out.println(str);
  }


  输出的字符串中什么都有(和乱码应该没关系),如何让生成的盐中只包含字母和数字啊。
3 个回答
  • 请输入代码

    char[] chars="0123456789abcdefghijklmnopqrwtuvzxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
    char[] saltchars=new char[16];
    Random RANDOM = new SecureRandom();
    for(int i=0;i<16;i++)
    {
    int n=RANDOM.nextInt(62);
    saltchars[i]=chars[n];
    }
    String salt=new String(saltchars);
    2022-11-26 20:32 回答
  • base62encode

    2022-11-26 20:32 回答
  •     public static void main(String[] args) throws Exception {
            Random RANDOM = new SecureRandom();
            byte[] salt = new byte[16];
            RANDOM.nextBytes(salt);    
    -       String str = new String(salt,"UTF-8");
    +       String str = new BASE64Encoder().encode(salt);
            System.out.println(str);
        }
    

    这篇文章写得很详细。
    https://weblogs.java.net/blog/evanx/archive/2013/01/24/password-salt

    2022-11-26 20:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有