首页 > 解决方案 > 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);

标签: javascriptphp

解决方案


做几乎一样的事情..

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>


推荐阅读