From 418fc4dccf3f22e0d79729f812743ba7b1116611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Thu, 29 Jun 2023 15:56:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(verify):=E5=A2=9E=E5=8A=A0=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=8C=87=E5=AE=9A=E4=BD=8D=E6=95=B0=E7=9A=84=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/verifiy_code/mod.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a49b13..3cf97a7 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Rust 中可以使用的常用辅助功能工具箱。主要配备以下功能: - 签名算法 - [ ] RSA 签名算法 - 验证码生成器 - - [ ] 随机验证码生成算法 + - [x] 随机验证码生成算法 - 序列化算法 - [x] Base64 算法 - [x] Hex 直转 diff --git a/src/verifiy_code/mod.rs b/src/verifiy_code/mod.rs index e69de29..d72a78e 100644 --- a/src/verifiy_code/mod.rs +++ b/src/verifiy_code/mod.rs @@ -0,0 +1,19 @@ +use rand::{seq::SliceRandom, thread_rng}; + +const RAND_STR_SRC: &str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + +/// 生成一个指定长度的随机验证码。 +/// +/// - `n`:要生成的验证码长度。 +pub fn random_verify_code(n: usize) -> Box { + let choices = RAND_STR_SRC.as_bytes(); + let mut rng = thread_rng(); + let mut code: Vec = vec![]; + while code.len() < n { + match choices.choose(&mut rng) { + Some(c) => code.push(String::from_utf8(vec![*c]).unwrap()), + None => continue, + } + } + Box::from(code.join("")) +}