javascript - Javascript 中的令牌生成熵等价物
问题描述
这一小段 PHP 代码生成了具有非常好的熵的令牌。我想知道JavaScript中是否有可以完成相同功能的函数。欢迎举例。
这是PHP
function getToken($length) {
$token = "";
$codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$codeAlphabet .= "abcdefghijklmnopqrstuvwxyz";
$codeAlphabet .= "0123456789";
$max = strlen($codeAlphabet);
for ($i=0; $i < $length; $i++) {
$token .= $codeAlphabet[random_int(0, $max-1)];
}
return $token;
}
echo getToken(24);
解决方案
做几乎一样的事情..
function getToken(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
console.log(getToken(10));
使用 Jquery 的示例
$( document ).ready(function() {
// set the length of the string
var stringLength = 10;
// list containing characters for the random string
var stringArray = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','!','?'];
$("#generateToken").click(function (){
var rndString = "";
// build a string with random characters
for (var i = 1; i < stringLength; i++) {
var rndNum = Math.ceil(Math.random() * stringArray.length) - 1;
rndString = rndString + stringArray[rndNum];
};
$("#showToken").html('<p><strong>' + rndString + '<strong></p>');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Click the button below to generate a new, randomized token.</p>
<button id="generateToken">Generate New Token</button>
<p id="showToken"></p>
推荐阅读
- dictionary - 重现“致命错误:并发映射读取和映射写入”
- reactjs - 当使用 TypeScript 编译器 API 的类型检查器遇到它们时,React 类型默认为 `any`
- java - Selenium |Maven |失败跟踪|Java.lang.NullpointerException| 第一个测试用例通过后
- debugging - 强制 Visual Studio 调试器在库卸载后保留符号
- elasticsearch - 删除要由 Elasticsearch 分析器处理的字段中的双引号
- r - 如何滞后数据框并将数字替换为0
- plot - 在 Observable Plot 中,如何从 bin() 变换中对堆栈进行排序/排序?
- node.js - MongoDb findOne 结果属性未定义
- android - react-native run-android 给出错误:在锁定文件中发现意外的锁定协议。预期 3,发现 0
- vb.net - 搜索到DataGridView(显示记录)选择记录打印vb.net