我需要在用户浏览器中生成一个安全的50个字符的随机字符串。
看着sjcl.prng到目前为止,我已经做到了:
$(document).ready(function () {
sjcl.random = new sjcl.prng(8);
sjcl.random.startCollectors();
$("body").on('mousemove', function() {
console.log(sjcl.random.getProgress(8));
if(sjcl.random.isReady(8) === 2) {
sjcl.random.stopCollectors();
console.log(sjcl.random.randomWords(5,8));
}
});
});
将鼠标移动一会儿后,我得到了一个字节数组,如下所示:
[-579285364, 1099191484, 94979086, -1572161987, -570940948]
。但是我正在寻找的是一个50个字符的字母数字字符串。我对该主题的知识有限,因此我在这里寻求帮助。
最佳答案
这是我解决的方法:
function createRandomString (callback, length) {
var randomBase64String = '',
checkReadyness;
checkReadyness = setInterval(function () {
console.log(length);
if(sjcl.random.isReady(10)) {
while(randomBase64String.length < length) {
randomInt = sjcl.random.randomWords(1, 10)[0];
randomBase64String += btoa(randomInt);
}
randomBase64String = randomBase64String.substr(0, length);
callback(randomBase64String);
clearInterval(checkReadyness);
}
}, 1);
}
This doesn't work in older browsers though. Because I used window.btoa().