作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Javascript 中是否有加密安全伪随机数生成器 (CSPRNG)?
我知道我可以使用以下方法生成伪随机数
Math.random()
;
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
在 Python 中,我会使用 secrets()
而不是 random()
。
import secrets alphabet = string.ascii_letters + string.digits password = ''.join(secrets.choice(alphabet) for i in range(8))
在 Go 中,我会使用 crypto.rand
包而不是 math/rand
包。
package main
import (
"bytes"
"crypto/rand"
"fmt"
)
func main() {
c := 10
b := make([]byte, c)
_, err := rand.Read(b)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(bytes.Equal(b, make([]byte, c)))
}
javascript 中是否有等效项?
最佳答案
在浏览器中,您可以查看 window.crypto.getRandomValues
。查看详情 here .
const array = new Uint32Array(10);
window.crypto.getRandomValues(array);
在节点中,查看 crypto module .
const crypto = require('crypto');
crypto.randomBytes(20, (err, buffer) => {
const token = buffer.toString('hex');
console.log(token);
});
如果您对浏览器支持有顾虑,请考虑查看像 this one 这样的 npm 包。 .注意:我从未使用过这个,所以我不能保证。
关于javascript - 如何在 Javascript 中生成加密安全的伪随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58600148/
我是一名优秀的程序员,十分优秀!