在Java中生成 OTP 并加密的最佳方法

5
什么是在Java中生成OTP(一次性密码或随机短字符串)并加密它的最佳方法?我熟悉MD5、sha256。但我猜这还不够,因为仍然有更好的方法来生成OTP字符串,并且有些使用了我不太熟悉其工作原理的算法。例如RFC 6238上的TOTP:基于时间的一次性密码算法。用于OTP。这会创建一个“代码”,它将使用它创建时的当前时间吗?
此外,在网上找到了这个示例关于使用Java加密字符串: 在Java中加密字符串 基本上,我想要实现的是安全地生成一个较少易被黑客猜测的代码并对其进行安全保护。所以也许我会使用当前日期和时间以及用户年龄生成一个代码。
如果有人能指导我,告诉我应该如何选择最佳生成短代码并对其进行加密的方向,就像使用某种算法一样,那么几个链接将非常有帮助。

3
MD5和SHA256不是加密算法,它们是哈希算法。加密使用一个或一对密钥,但哈希不需要。没有“最好”的方法,这取决于具体的用途。而你并没有提及具体用途。 - JB Nizet
@JBNizet 哈希族也有键。更好的描述差异的方法是可逆性。 - Chris Martin
@JBNizet 是的,非常抱歉,我会编辑我的帖子。我混淆了加密和哈希的概念。 - magicianiam
@RebTuble 对于从Java生成安全随机值,我会建议使用new SecureRandom()。这应该足够满足大多数用例。 - Maarten Bodewes
@ChrisMartin 哈希族并没有密钥(它是一组哈希函数,怎么可能有密钥呢?)而安全哈希算法本身也不使用密钥作为输入。它们可能在内部使用密钥,如HMAC等构造可能使用密钥,但哈希算法签名本身并没有包含密钥。 - Maarten Bodewes
显示剩余2条评论
1个回答

2

加密技术非常安全,因为对于攻击者来说,解密需要很长时间。而且它是所有加密算法中最慢的,从安全性方面来看这是最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接