Is this piece of code safe?

SecureRandom randomizer = new SecureRandom(String.valueOf(new Date().getTime()).getBytes());

Is this the right way to instance the seed of secure random?

解决方案

No, you should avoid the SecureRandom(byte[]) constructor. It is both unsafe and non-portable.

It is non-portable because it behaves differently on Windows vs. other operating systems.

On most OSes, the default algorithm is "NativePRNG", which obtains random data from the OS (usually "/dev/random") and ignores the seed you provide.

On Windows, the default algorithm is "SHA1PRNG", which combines your seed with a counter and computes a hash of the result.

This is bad news in your example, because the input (the current UTC time in milliseconds) has a relatively small range of possible values. For example if an attacker knows that the RNG was seeded in the last 48 hours, they can narrow the seed down to less than 228 possible values, i.e. you have only 27 bits of entropy.

If on the other hand you had used the default SecureRandom() constructor on Windows, it would have called the native CryptoGenRandom function to get a 128-bit seed. So by specifying your own seed you have weakened the security.

If you really want to override the default seed (e.g. for unit testing) you should also specify the algorithm. E.g.

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");

sr.setSeed("abcdefghijklmnop".getBytes("us-ascii"));

java securt 视频,SecureRandom在Java中安全种子相关推荐

  1. Java自学视频整理(持续更新中...)

    1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播客) 张孝祥2010年贺岁视频:Java高新技术 ...

  2. java 取视频第一帧,java获取视频的第一帧

    //------------maven配置文件--------------- org.bytedeco javacv 0.8 /** * 获取指定视频的帧并保存为图片至指定目录 * @param vi ...

  3. python vs java 搞笑视频_Python VS Java,谁能笑到最后?

    一些开发人员声称Python比Java更有生产力.但更应先说明的是:Python和Java有什么区别? Python VS Java 在学习中有迷茫不知如何学习的朋友小编推荐一个学python的学习裙 ...

  4. redis java 集成视频_redis(6)-java集成二

    使用Jedis框架: 创建maven工程,引入依赖 redis.clients jedis 2.9.0 Demo代码如下: import java.util.HashMap; import java. ...

  5. 毕老师JAVA基础视频 学习日志——Java开发前奏

    1.基础常识 1.1.  软件开发 软件:一系列按照特定顺序组织的计算机数据和指令的集合.分为系统软件和应用软件.         开发:就是制作软件. 1.2.  人机交互 人机交互:就是人与计算机 ...

  6. java获取视频真实地址,Java版蓝奏云真实地址获取

    Java版蓝奏云真实地址获取,支持密码文件下载 Tools.java package com.lhr; import java.io.*; import java.net.*; /** * * By ...

  7. Java 给视频添加背景音乐 | Java工具

    目录 前言 Maven依赖 环境依赖 代码 总结 前言 本文提供给视频添加背景音乐的java工具,一如既往的实用主义. Maven依赖 <dependency><groupId> ...

  8. python vs java 搞笑视频_Python和Java该学哪个?别纠结了700集视频合集,限时分享...

    Java还是Python这确实是个难题.如果问Java程序员一定会告诉你先学Java,如果问Python程序员一定会告诉你先学python.今天小编来给你分析一下.你到底适合学哪个? 本文内容要点: ...

  9. java map key是否存在_java中如何判断map集合中是否存在key

    有两种方法可以判断map集合中是否存在某个key. 方法1:直接使用java api提供的containsKey(): 方法2:循环遍历,逐个比较. java相关视频推荐:java视频 具体实现代码如 ...

最新文章

  1. SAP VC销售订单中可配置物料的使用
  2. 博弈论笔记:逆向选择与非对称信息
  3. java最基础语句,Java基础:Java语句
  4. linux系统从开机到登录之前的启动流程
  5. 前瞻:Java能否畅行未来?
  6. argo 现水下永动机器人_水下永动机器人现身
  7. Mixed Content: The page at ‘xxx‘ was loaded over HTTPS, but requested an insecure resource ‘xxx‘.
  8. oracle 导入 导出 imp、exp
  9. python可以做哪些小工具_用Python写过哪些「脑洞大开」的小工具?
  10. iMeta | FSCapture报告录屏和视频剪辑(视频教程)
  11. CS游戏控制台命令大全(来自网络)
  12. 树莓派红外避障小车python_制作树莓派wifi遥控和自动避障小车
  13. 黄金矿工swf游戏修改
  14. css字体样式加粗变大,css怎么设置字体加粗样式
  15. Vue 点击按钮,下载视频
  16. 未能连接一个windows服务器,Win7出现未能连接一个Windows服务的解决办法
  17. 用python批量下载网络图片_使用python批量下载图片吗?怎么做?
  18. python 庖丁科技pdflux的表格解析(精度很高)
  19. 吴恩达《机器学习》——SVM支持向量机
  20. 关于9530/9630 R-UIM模式电信行货与水货比对测试的思考

热门文章

  1. leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)
  2. Java集合Collection与List的关系、常见用法
  3. C语言文件操作(三)读取指定路径txt文件,并输出文件内容
  4. Spring5参考指南:IOC容器
  5. CentOS下Hive2.0.0集群模式安装详解
  6. Leet Code OJ 21. Merge Two Sorted Lists [Difficulty: Easy]
  7. android 蒙版图片带拖动_Android实现蒙版弹出框效果
  8. Java中的垃圾回收
  9. 容器学习 之 容器的网络类型(十二)
  10. C++实现字符串分割函数split()