我一直在寻找一种简单的 Java算法来生成伪随机字母数字字符串.在我的情况下,它将被用作一个唯一的会话/密钥标识符,它"很可能"在500K+
生成过程中是唯一的(我的需求实际上并不需要更复杂的东西).
理想情况下,我可以根据我的唯一性需求指定长度.例如,生成的长度为12的字符串可能看起来像"AEYGF7K0DM1X"
.
我知道随机UUID在理论上具有非常非常非常低的碰撞概率,但我想知道,在实践中,Java 5 randomUUID()
在没有碰撞方面有多好?有没有人有经验可以分享?
我想对数据库中的敏感数据使用加密安全主键 - 这是无法猜测/可预测的,并且它不能由数据库生成(我需要在持久化对象之前使用密钥).
我知道Java使用带有加密安全随机数生成器的类型4 UUID,但是我知道UUID并不是完全随机的,所以我的问题是假设无法从一组现有的uuid中预测uuids是多么安全?
我正在寻找一种机制来生成用于重置用户密码的随机唯一字母数字键。
我朝这个方向进行了很多眼光检查,但看起来这不是显而易见的事情。
我已经尝试过类似的方法:
new String(encodeBase64URLSafe(UUID.randomUUID()));
Run Code Online (Sandbox Code Playgroud)
但是,在阅读以下文章之后:UUID.randomUUID()是否适合用作一次性密码?看起来这种方式并不完全正确。
如果您回答以下问题,将不胜感激:
我有一个网站向某人发送确认电子邮件.
现在在电子邮件中我希望有一个链接,用户必须单击以确认他收到了邮件.
我想将用户的密码(或一些随机代码)包含在确认地址中,因此用户无需再次手动输入密码,但如果我这样做,密码将最终显示在浏览器历史记录中日志文件.
有没有其他方法可以在电子邮件中获取确认链接,以发送用户名和密码等信息,而不会以某种方式在链接中结束?
例如,是否可以在电子邮件中输入输入表单并将密码作为POST而不是GET发送?
java ×4
uuid ×3
random ×2
alphanumeric ×1
base64 ×1
confirmation ×1
email ×1
security ×1
string ×1