我知道已经有工具可以生成加密随机数,但我想知道使用 AES 是否可以做到这一点。
例如,我的服务器上有一个 AES 密钥,我的数据库中有一个计数器。每次我想生成一个随机数时,我都会增加计数器,然后使用服务器上的密钥使用 AES 对其进行加密,然后将生成的位转换为正确的数字。
只要找不到我的密钥,这不会产生安全的随机数吗?
注意:如果您想说在服务器上存储密码不安全,请说明它与在服务器上存储私有 SSL 密钥有何不同。
编辑
在维基百科上找到了一些信息
通过在计数器模式下运行,可以将安全分组密码转换为 CSPRNG。这是通过选择一个随机密钥并加密 0,然后加密 1,然后加密 2 等来完成的。计数器也可以从零以外的任意数字开始。显然,对于 n 位分组密码,周期将是 2n;同样明显的是,初始值(即密钥和“明文”)不得为攻击者所知,无论这种 CSPRNG 构造有多好。否则,将失去所有安全性。
因此,它之前被用于构建 CSPRNG。