Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { AES, SHA256, enc } from "crypto-js"
- import moment from "moment"
- const privateKey = "secret"
- const password = "123456"
- const refCode = "ASDASD"
- const createOtp = (password, refCode) => {
- return {
- password: AES.encrypt(password, privateKey).toString(),
- refCode,
- expireTime: moment().add(1, "minute").unix()
- }
- }
- const sign = (otp) => {
- return {
- token: otp,
- signature: SHA256(JSON.stringify(otp), privateKey).toString()
- }
- }
- const send = sign(createOtp(password, refCode))
- console.log("send", send)
- // from client
- const receive = {
- tryPassword: "123456",
- token: send.token,
- signature: send.signature
- }
- const validateToken = (token, signature) => {
- return signature === SHA256(JSON.stringify(token), privateKey).toString()
- }
- const validateExpireTime = (token, now) => {
- return moment(token.expireTime).isAfter(now)
- }
- const validatePassword = (token, tryPassword) => {
- return AES.decrypt(token.password, privateKey).toString(enc.Utf8) === tryPassword
- }
- console.log("token:", validateToken(receive.token, receive.signature))
- console.log("expire:", validateExpireTime(receive.token, moment()))
- console.log("password", validatePassword(receive.token, receive.tryPassword))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement