此小工具是我突发奇想想的一个密码加密算法, 通过对一个小数的幂指数的不断迭代运算, 可以取得完全打乱字符排列的效果, 用户只要略微更改这密码初值,密码模板,计算指数中的任何一个, 所运算的结果都千差万别,毫无规律。

该小工具完全采用原生js编写,方便用户更改代码, 没有应用任何外部资源, 完全可以断网使用。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no" /><title>简单密码生成器</title><style type="text/css">html,body {padding: 0;margin: 0;}.password-create {margin: 5px auto;border: 1px solid gray;box-shadow: rgba(0, 0, 0, .5) 2px 3px 10px;border-radius: 0;width: calc(100% - 10px);box-sizing: border-box;overflow-x: hidden;padding: 10px;min-width: 340px;max-width: 500px;}.password-create-title {color: black;font-size: 18px;font-weight: bold;padding: 5px;margin-bottom: 5px;}.row {width: 100%;height: 55px;margin-bottom: 0;display: flex;justify-content: flex-start;align-items: center;}.input_label {height: 32px;display: flex;justify-content: flex-end;align-items: center;text-align: right;width: 80px;font-size: 16px;}.input-text {height: 32px;display: flex;justify-content: flex-start;align-items: center;padding-left: 5px;margin-left: 5px;width: calc(100% - 160px);font-size: 16px;}.btn {width: 120px;height: 40px;display: inline-flex;justify-content: center;align-items: center;color: white;background: rgb(54, 211, 153);font-size: 16px;cursor: pointer;border: 0px solid rgb(54, 211, 153);outline: none;}.btn:active {opacity: 0.8;}.input-checkbox {width: 20px;height: 20px;}a {text-decoration: none;}.hint-span {color: red;}.msg {color: red;font-size: 20px;font-weight: bold;padding-left: 20px;box-sizing: border-box;}.btn-row {justify-content: flex-end;text-align: right;padding-right: 2%;box-sizing: border-box;margin-top: 10px;}.readme p {margin: 5px 0;padding: 0;font-size: 18px;font-weight: bold;color: #333;}.readme ul {list-style-type: none;padding: 0;margin: 0;}.readme li {padding: 5px;margin: 0;font-size: 16px;color: #666;line-height: 26px;}.readme .demo-img {width: 100%;}.input-select {position: relative;margin-left: 5px;width: calc(100% - 160px);font-size: 16px;box-sizing: border-box;}.input-select input {height: 36px;display: flex;justify-content: flex-start;align-items: center;width: 100%;font-size: 16px;padding-left: 10px;box-sizing: border-box;}.input-select input:focus+.select-wrap {display: block;}.input-select:focus .select-wrap {display: block;}.input-select .select-wrap {display: none;box-sizing: border-box;position: absolute;width: 100%;z-index: 1;top: 100%;left: 0;padding: 5px;background-color: white;box-shadow: rgba(0, 0, 0, .5) 2px 3px 10px;}.input-select .select-wrap .select-option {height: 32px;display: flex;justify-content: flex-start;align-items: center;font-size: 16px;color: #333;padding: 5px 10px;cursor: pointer;user-select: none;border-bottom: 1px dashed #eee;}.input-select .select-wrap .select-option:active {opacity: 0.8;background-color: #f2f2f2;}</style>
</head><body><div class="password-create"><div class="password-create-title">密码生成器</div><div id="msg" class="row msg"></div><div class="row"><label for="seedValue" class="input_label"><span class="hint-span">*</span>密码初值:</label><div class="input-select" tabindex="0"><input type="text" id="seedValueInput" value="" placeholder="请输入密码初始值" /></div><a href="javascript:;" id="clearSeedValueBtn">&nbsp;&nbsp;清空</a></div><div class="row"><label for="pwdTpl" class="input_label"><span class="hint-span">*</span>密码模板:</label><div class="input-select" tabindex="0"><input type="text" id="pwdTplInput" value="" list="pwdTplDataList" placeholder="请输入密码生成模板" /><div class="select-wrap" id="pwdTplDataList"></div></div><a href="javascript:;" id="clearPwdTplBtn">&nbsp;&nbsp;清空</a></div><div class="row"><label for="createPowInput" class="input_label"><span class="hint-span">*</span>计算指数:</label><div class="input-select" tabindex="0"><input type="text" id="createPowInput" value="" placeholder="计算指数为小于10的8-15位小数" /><div class="select-wrap" id="createPowList"></div></div><a href="javascript:;" id="clearCreatePowBtn">&nbsp;&nbsp;清空</a></div><div class="row btn-row"><input type="button" id="createBtn" class="btn" value="生成密码" /></div><div class="readme"><p>下载地址: &nbsp;&nbsp;<a style="font-size: 16px;" href="./pwd.html"download='pwd.html'>点此下载该工具</a></p><p>使用说明: </p><ul><li>1. 密码初值: 用于生成密码的种子, 可以看做为明密, 可以为任何字符, 可以包含汉字, 长度限制30个字符</li><li>2. 密码模板: 用于生成密码的模板, 最终生成的密码格式, 包含数字, 大写字母, 小写字母和特殊字符, 长度限制30个字符</li><li>3. 计算指数: 用于密码计算的指数, 该数字为一个小于10的8-15位小数, 最好为一个无理数的计算结果取前15位</li><li>4. 把这个文件保存自己的手机或电脑上, 首次使用时一定要自己修改这个文件的模板数据, 不要用这个默认的示例</li><li><img class="demo-img"src="data:image/png;base64,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" /></li></ul></div></div><script type="text/javascript">"use strict";let PasswordUtil = function () {// 此处的配置一定要自行修改, 不要用这个默认的配置let pwdConfig = {numberMap: "1234567890",// 所有的数字uppercaseMap: "abcdefghijklmnopqrstuvwxyz",// 所有的小写字母lowercaseMap: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",// 所有的大写字母specialCharacterMap: "~!@#$%^&*()_+-=|/\<>,.;:[]{}",// 所有的特殊字符randomPow: Math.PI + 1, // 打乱排序的计算指数, 一个杂乱无章的小数 如: 3.141592653589793, 小数位数最多为15位createPow: Math.E + 2, // 生成密码计算指数, 一个杂乱无章的小数 如: 2.718281828459045, 小数位数最多为15位}try {charMapRandom()} catch (e) {console.error(e)}function getRandomChar(s, randomIndex) {let ch = "";if (pwdConfig.numberMap.indexOf(s) > -1) {ch = "" + pwdConfig.numberMap[randomIndex % pwdConfig.numberMap.length];} else if (pwdConfig.uppercaseMap.indexOf(s) > -1) {ch = pwdConfig.uppercaseMap[randomIndex % pwdConfig.uppercaseMap.length];} else if (pwdConfig.lowercaseMap.indexOf(s) > -1) {ch = pwdConfig.lowercaseMap[randomIndex % pwdConfig.lowercaseMap.length];} else if (pwdConfig.specialCharacterMap.indexOf(s) > -1) {ch = pwdConfig.specialCharacterMap[randomIndex % pwdConfig.specialCharacterMap.length];}return ch;}function getCharWeight(s) {let weight = 1;if (pwdConfig.numberMap.indexOf(s) > -1) {weight = 2;} else if (pwdConfig.uppercaseMap.indexOf(s) > -1) {weight = 3;} else if (pwdConfig.lowercaseMap.indexOf(s) > -1) {weight = 4;} else if (pwdConfig.specialCharacterMap.indexOf(s) > -1) {weight = 5;}return weight;}// 打乱字符顺序function charMapRandom() {randowMap("numberMap")randowMap("uppercaseMap")randowMap("lowercaseMap")randowMap("specialCharacterMap")function randowMap(filedName) {let charArr = pwdConfig[filedName].split("")let len = charArr.lengthlet precision = 12for (let i = 0; i < len; i++) {let randomNum = Math.pow(i + 1, pwdConfig.randomPow).toFixed(precision)let randomNumArr = randomNum.split(".")[1].split("").reverse()let randomIndex = parseInt(randomNumArr[0] + randomNumArr[precision / 2] + randomNumArr[precision - 1])let toIndex = randomIndex % lenlet temp = charArr[toIndex]charArr[toIndex] = charArr[i]charArr[i] = temp}pwdConfig[filedName] = charArr.join("")}}// 生成密码function createPwd(seedStr, pwdTpl, createPow) {let seedArr = seedStr.split("")let pwdTplArr = pwdTpl.split("")createPow = createPow || pwdConfig.createPowlet seedCodeArr = [];seedArr.forEach(function (ch, index) {seedCodeArr.push(ch.charCodeAt());});let seedSum = 0;seedCodeArr.forEach(function (item, index) {seedSum += item * 1 + index;});let pwd = ""let pwdTplLen = pwdTplArr.lengthlet seedLen = seedArr.lengthlet precision = 12let charWeightSum = pwdTplLenfor (let i = 0; i < pwdTplLen; i++) {let type = pwdTplArr[i];charWeightSum += getCharWeight(type);let randomNum = Math.pow((seedSum + charWeightSum) / (3 * i + 1), pwdConfig.createPow).toFixed(precision);let randomNumArr = randomNum.split(".")[1].split("").reverse();let randomIndex = parseInt(randomNumArr[0] + randomNumArr[precision / 2] + randomNumArr[precision - 1]);pwd += getRandomChar(type, randomIndex);}return pwd;}return {pwdConfig,createPwd,};}();setTimeout(() => {appInit()}, 0)function appInit() {// 密码模板选项数据let allPwdTplDataOptions = ["123456","12345678","aaa123456","aa#123456","Aaa123456","Aaa#123456","Aaa#12345678"]// 计算指数选项数据let allCreatePowOptions = [3.141592653589793,2.718281828459045,1.414213562373095,1.732050807568877,2.645751311064591,]let seedValueInputEl = document.getElementById("seedValueInput")let clearSeedValueBtnEl = document.getElementById("clearSeedValueBtn")let pwdTplInputEl = document.getElementById("pwdTplInput")let clearPwdTplBtnEl = document.getElementById("clearPwdTplBtn")let createPowInputEl = document.getElementById("createPowInput")let clearCreatePowBtnEl = document.getElementById("clearCreatePowBtn")let createBtn = document.getElementById("createBtn")let pwdTplInputSelect = createSelect("pwdTplInput", "pwdTplDataList")let createPowSelect = createSelect("createPowInput", "createPowList")pwdTplInputSelect.setData(allPwdTplDataOptions, false)createPowSelect.setData(allCreatePowOptions, true)// 清空输入框clearSeedValueBtnEl.addEventListener("click", function (e) {seedValueInputEl.value = ""}, false)clearPwdTplBtnEl.addEventListener("click", function (e) {pwdTplInputEl.value = ""}, false)clearCreatePowBtnEl.addEventListener("click", function (e) {createPowInputEl.value = ""}, false)// 点击生成密码createBtn.addEventListener("click", function (e) {let seedValue = seedValueInputEl.value.trim()let pwdTpl = pwdTplInputEl.value.trim()let createPow = createPowInputEl.valueif (!seedValue) {printMsg("请输入密码初始值")return false;}if (!pwdTpl) {printMsg("请输入密码生成模板")return false;}if (!checkInputValue(pwdTpl)) {printMsg("密码生成模板不能包含非法字符")return false;}if (seedValue.length > 30) {printMsg("密码初始值不能超过30个字符!")return false;}if (pwdTpl.length > 30) {printMsg("密码模板不能超过30个字符!")return false;}if (!myUtil.isNumeric(createPow)) {printMsg("请输入计算指数!")return false;}let createPowDotIndex = createPow.indexOf(".")if (createPowDotIndex == -1 || createPow * 1 > 10) {printMsg("计算指数必须为小于10的小数!")return false;}let createPowDecimal = createPow.substring(createPowDotIndex + 1)if (createPowDecimal.length > 15 || createPowDecimal.length < 8) {printMsg("计算指数小数位数必须为8-15位!")return false;}PasswordUtil.pwdConfig.createPow = createPow * 1let pwdStr = PasswordUtil.createPwd(seedValue, pwdTpl)printMsg(`<span style="color:#36d49a">${pwdStr}</span>`)}, false)function printMsg(htmlMsg) {let msgEl = document.getElementById("msg")if (msgEl) {msgEl.innerHTML = htmlMsg}}function checkInputValue(value) {let valueArr = value.split("")let allStr = PasswordUtil.pwdConfig.numberMap + PasswordUtil.pwdConfig.uppercaseMap +PasswordUtil.pwdConfig.lowercaseMap + PasswordUtil.pwdConfig.specialCharacterMap;for (let i = 0; i < valueArr.length; i++) {if (allStr.indexOf(valueArr[i]) == -1) {return false}}return true}function refreshDataList(id, dataList) {let html = "";dataList.forEach(function (val) {html += '<option value="' + val + '" />';});let dataListEl = document.getElementById(id);if (dataListEl) {dataListEl.innerHTML = html;}}function createSelect(inputId, inputListId) {let inputEl = document.getElementById(inputId)let inputListEl = document.getElementById(inputListId)let allDataList = []let showDataList = []inputEl.addEventListener("input", function (e) {refreshData()})inputEl.addEventListener("focus", function (e) {refreshData()})inputListEl.addEventListener("click", function (e) {if (e.target.classList.contains("select-option")) {let item = e.target.dataset.iteminputEl.value = iteminputListEl.parentNode.blur()}})function refreshData() {let inputValue = inputEl.value.trim()let showDataList = allDataList// 过滤选项// if (inputValue) {//     showDataList = allDataList.filter((item) => {//        return (item + "").indexOf(inputValue) > -1//     })// }let html = "";showDataList.forEach(function (item, index) {html += `<div data-index="${index}" data-item="${item}" class="select-option">${item}</div>`;});if (showDataList.length == 0) {html += `<div data-index="-1" data-item="" class="select-option">暂无符合条件的数据</div>`;}inputListEl.innerHTML = html;}function setData(dataList, isInit) {allDataList = dataListif (isInit && !inputEl.value && dataList.length > 0) {inputEl.value = allDataList[0]}refreshData()}return {setData}}};</script><script type="text/javascript">"use strict";window.myUtil = (function () {function isType(val) {return Object.prototype.toString.call(val).slice(8, -1);}function isObject(val) {return isType(val) === 'Object';}function isArray(val) {return isType(val) === 'Array';}function isFunction(val) {return isType(val) === 'Function';}function isNumeric(val) {return (!Number.isNaN(parseFloat(val))) && Number.isFinite(Number(val));}let sessionStorage = window.sessionStorage;let localStorage = window.localStorage;function saveDataToLocal(saveName, obj, isSessionStorage = true, expireTime) {if (obj === null) {if (isSessionStorage) {sessionStorage.removeItem(saveName)} else {localStorage.removeItem(saveName)}return;}if (obj && (isObject(obj) || isArray(obj))) {if (isSessionStorage) {sessionStorage.setItem(saveName, JSON.stringify(obj))} else {localStorage.setItem(saveName, JSON.stringify(obj))}} else {if (isSessionStorage) {sessionStorage.setItem(saveName, obj)} else {localStorage.setItem(saveName, obj)}}//存过期时间if (expireTime) {let expireTimeObjStr = JSON.stringify({time: new Date().getTime(),expireTime: expireTime});if (isSessionStorage) {sessionStorage.setItem(saveName + "ExpireTime", expireTimeObjStr)} else {localStorage.setItem(saveName + "ExpireTime", expireTimeObjStr)}}}function readDataFromLocal(readName, isSessionStorage = true) {let dataStr = null;let data = null;if (isSessionStorage) {dataStr = sessionStorage.getItem(readName);} else {dataStr = localStorage.getItem(readName);}if (dataStr && typeof dataStr == 'string') {//如果过期直接返回nulllet expireTimeObj = readDataFromLocal(readName + "ExpireTime", isSessionStorage);if (expireTimeObj) {if ((new Date().getTime() - expireTimeObj.time) >= expireTimeObj.expireTime) {saveDataToLocal(readName, null, isSessionStorage);return null;}}let first = dataStr.charAt(0);//如果是数组或对象if (first === '{' || first === '[') {data = JSON.parse(dataStr);} else {//尝试保持原始数据类型try {data = JSON.parse(dataStr);;} catch (e) {data = dataStr;}}} else {data = dataStr;}return data;}return {isType,isObject,isNumeric,saveDataToLocal,readDataFromLocal}})()</script>
</body></html>

demo地址: 简单密码生成器

github源码:  GitHub - chengxg/simple-create-password: 简单的密码生成器

  • 1. 密码初值: 用于生成密码的种子, 可以看做为明密, 可以为任何字符, 可以包含汉字, 长度限制30个字符
  • 2. 密码模板: 用于生成密码的模板, 最终生成的密码格式, 包含数字, 大写字母, 小写字母和特殊字符, 长度限制30个字符
  • 3. 计算指数: 用于密码计算的指数, 该数字为一个小于10的8-15位小数, 最好为一个无理数的计算结果取前15位

js密码生成器小工具相关推荐

  1. 分享JS压缩混淆小工具

    JS压缩混淆工具 一.功能介绍 编写了一个JS压缩混淆小工具. 选择目录文件夹,指定当前目录下需要压缩的JS文件, 合并(复选框): 勾选 表示把当面目录下的所有JS文件合并压缩混淆成一个独立的 al ...

  2. Excel文件密码破解小工具

    下载地址:http://write.blog.csdn.net/postedit 软件综述 Excel文件解密辅助小工具软件截图 Excel文件解密辅助小工具软件简介 excel密码破解工具是一款针对 ...

  3. 分享一下自己用的SQLite数据库密码操作小工具(含源码)

    SQLite(http://www.hwaci.com/sw/sqlite/download.html)的优势以及wxsqlite(http://wxcode.sourceforge.net/comp ...

  4. JS 倒计时展示小工具

    废话开篇:JS 通过操控标签的隐藏与显示来实现倒计时展示小工具 一.实现效果 1.默认展示数字 2.数字倒计时 3.数字倒计时展示虚位 4.数字倒计时不展示虚位 5.小数 6.负数 7.小数倒计时 每 ...

  5. 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...

    @open-node/antman 窥探进程内部,让 Node.js 生产环境线上调试成为可能 解决了什么问题? 日常在开发服务端代码,很多是服务类型的,比如基于http的api,或者一些任务脚本,需 ...

  6. js 创建书签小工具并实现自动表单填写

    1.最近学校布置网课视频,贼心不改,就找了一个自动刷题软件就处理好了,本来是一件完美的事情,可是作为学计算机的同学,我是不允许有什么神奇的事情发上,必须研究研究怎么实现的 2.虽然只是有了一小点了解, ...

  7. 饿了么同事拼单,单人价格计算JS 拼单小工具

    经常和同事拼单点外卖 直接写了一个计算工具方便使用 //浏览器F12 粘贴运行,自行修改变量 //每份订单的价格 let array = [17,16,18,16] //配送费 let p = 5.5 ...

  8. 记录一个使用MD5加密密码的小工具类

    2019独角兽企业重金招聘Python工程师标准>>> package com.zaizai.safty.utils; import java.security.MessageDig ...

  9. ToolsOhの密码生成器(KT:java、zxcvbn、passay)

    ❑ToolsOh!の[密码生成器]工具的功能 所在位置:ToolsOh/生活工具/密码生成器 主要技术:java.zxcvbn.passay 1.功能简介 随机生成可靠.随机且唯一的密码 2.输入.输 ...

最新文章

  1. NeHe教程Qt实现——lesson16
  2. CodeForces - 1350B Orac and Models(dp)
  3. 水晶报表-简单数据类型(Crystal 语法)
  4. VMworld 2010旧金山胜利闭幕
  5. Javascript学习笔记一 之 数据类型
  6. windows7快捷键
  7. 查python的软件_Python制作天气查询软件【python实战必学】
  8. AcWing 829. 模拟队列
  9. linux启用dcb步骤,Linux DCB体系——简短概述
  10. 【sklearn第十九讲】高斯混合模型
  11. OpenStack混合云的集成问题如何克服?
  12. Android Gradle动态打32位或者64位的包
  13. 郭天祥 10天搞定单片机 (3)数码管+中断
  14. Glide 入门到精通之四——图片缩放和调整大小
  15. Binder通信机制原理解析
  16. 小豆苗服务器维护,小豆苗问题排查方法新版ppt课件
  17. java 合并两个List并去掉重复项
  18. 如何查看SCI期刊影响因子
  19. 第十三章、IO流_File类与递归/基本流/增强流/属性集与打印流__黑马Java第57期个人学习笔记_个人笔记
  20. 零基础学Arcgis(十三)专题地图的编制

热门文章

  1. 拜登留学新政:美国读博直接拿绿卡,增加H1B签证限额!但未来留美门槛反而变高了?...
  2. pd.concat()和pd.merge()
  3. 【2D多目标跟踪】Quasi-Dense Similarity Learning for Multiple Object Tracking阅读笔记
  4. 解决 Navigating to current location (/userslist) is not allowed问题。
  5. [论文阅读笔记31]UER: An Open-Source Toolkit for Pre-training Models
  6. Python学习-通过斗鱼api获取弹幕
  7. linux生成xorg,生成xorg.conf文件
  8. window屏幕录制
  9. 发展智慧城市,需要重点解决哪三大问题?
  10. 树莓派强制更改root密码