如何生成随机数代码以确认电子邮件

问题描述

我是初学者,在互联网上找不到通过电子邮件向刚注册或想重置密码用户发送 5 位代码(例如)的教程。

我在 Node.js 和 React.js 前端下使用 Rest API。因此,您必须注册用户并向他发送一封包含代码的电子邮件,当用户尝试连接时他的帐户在数据库中未显示为“活动”,我们将要求他提供 5 位代码

我找不到关于此实践的任何教程,以了解如何在没有安全漏洞的情况下以正确的方式进行操作。

感谢您的理解!

解决方法

从一组给定的字符中生成一个五位数的代码是一项非常简单的任务。消除安全问题要困难得多,这取决于您所需的安全级别。

如果您通过未加密的电子邮件发送代码,安全性不是很高(中间人攻击)。如果您使用加密电子邮件 (PGP),则可以认为它是安全的。

从给定集合中生成 5 个字符代码的代码:

const givenSet = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789";

let code = "";
for(let i=0; i<5; i++) {
   let pos = Math.floor(Math.random()*givenSet.length);
   code += givenSet[pos];
}
,

使用原生 crypto 包会容易得多。

const crypto = require('crypto')
const randomEightDigits = crypto.randomBytes(6).toString('base64')
,

使用crypto生成随机数的最简单方法

const crypto = require("crypto");

// Asynchronous
crypto.randomInt(0,1000000,(err,n) => {
  if (err) throw err;
  console.log(n);
});

快乐编码..!