Ryan's WorkSpace
  • 首页
  • 关于我
  1. 首页
  2. 通用分类
  3. 正文

用Node.js实现验证HUSTOJ密码模块

2018年03月15日 1360点热度 0人点赞 0条评论

内容纲要

由于HUSTOJ使用binary sha1以及BASE64加盐进行加密,我曾经尝试用crypto在Node.js上实现功能与之相同的模块。然而按照API 说明操作并不能成功生成对应的内容。经过对Buffer转码密文发现,在对BASE64密文进行解密时,应使用ASCII编码进行解密,而在对明文加密时,则应该用UTF-8进行加密。

 

实现如下:

[code lang=javascript] const crypto = require("crypto");
const checkPassword = (originalPassword, inputPassword, newpassword) => {
const convertedOriginalPasswordAscii = new Buffer(originalPassword, "base64").toString("ascii");
const convertedOriginalPassword = new Buffer(originalPassword, "base64").toString();
const salt = convertedOriginalPasswordAscii.substring(20);
const SHA1Password = crypto.createHash("sha1")
.update(crypto.createHash("md5")
.update(inputPassword)
.digest("hex") + salt)
.digest() + salt;
return SHA1Password === convertedOriginalPassword || newpassword === inputPassword;
};

[/code]

相关

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: hustoj JavaScript Node.js
最后更新:2018年03月15日

Ryan Lee

如果帮助到你,请点击广告,谢谢!

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

如果帮助到你,请点击广告,谢谢!

用户您好!请先登录!
登录 注册
Social Media
Github: ryanlee2014
标签聚合
hustoj Java php GitHub Apache JavaScript C++ C
友链
Pacolyon
Lucien's blog
Slian's DreamWork
卡拉搜索
  • 0
  • 15,321
  • 5,558
  • 0
广告

COPYRIGHT © 2020 Ryan's WorkSpace. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

登录
注册|忘记密码?