من می کوشم نوعی سیستم تأیید ایمیل را با سرور node.js بدون دولت پیاده سازی کنم.
استراتژی
- کاربر ایمیل خود را به سرور می فرستد
- سرور کد 4 رقمی را بر اساس آدرس ایمیل و ارسال آن از طریق ایمیل به کاربر.
- کاربر کد دریافت شده را از طریق ایمیل + آدرس ایمیل به سرور ارسال می کند
- سرور دوباره کد 4 رقمی را بر اساس ایمیل دوباره تولید می کند و آن را با کد ارسال شده توسط کاربر.
اجرای من برای تولید کد 4 رقمی
- ایجاد یک هضم HEX با استفاده از عملکرد هش HMAC SHA-256
- 3 شخصیت اول هضم را بگیرید
- آنها را به یک عدد صحیح تبدیل کنید.
- اگر طول <4 ، یک یا چند برابر شود
0در انتهای
const crypto = نیاز ("رمزنگاری")
const get4DigitsCode = (پیام) =>
const hash = crypto
.createHmac ('sha256' ، Buffer.from (SECRET_KEY ، 'هگزا'))
به روز رسانی (پیام)
. بزرگترین ("هگز")
const first3HexCharakter = hash.slice (0 ، 3)
const int = parseInt (first3HexCharactions، 16)
اجازه دهید کد = int.toString ()
کد =
آرایه (4 - کد. طول)
پر کنید (0)
.join ("") + کد
کد بازگشت
}
پس از تولید کد برای 8293 آدرس ایمیل ، متوجه شدم که 4758 نسخه تکراری دارم. آیا داشتن این مقدار تکراری برای یک کد به این صورت طبیعی است؟ آیا استراتژی و اجرای من امن است (توانایی حدس زدن کد)؟