密码生成器

每次访问一个网页,会生成一个对应密码,按F12在控制台查看

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         密码生成器
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  每次访问一个网页,会生成一个对应密码,按F12在控制台查看
// @author       hlmio
// @match        *://*/*
// @require      https://cdn.jsdelivr.net/npm/[email protected]/md5.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    // 配置变量
    var 核心秘钥 = "hlmio"
    var 密码长度 = 16
    var 为了满足大小写和特殊字符_添加的后缀 = "@Aa1"
    var 第一次md5后_交换哪几位字符_可选值为1到32 = [2,4,8,16,32]
    var 第一次md5后_删掉哪几位字符_可选值为1到32 = [1,3,7,15,31]

    var 自动获取的辅助秘钥_域名 = window.location.host
    var 秘钥 = 核心秘钥 + 自动获取的辅助秘钥_域名

    var 第一次md5后的结果 = md5(秘钥)
    var md5数组 = 第一次md5后的结果.split('')
    // 换位
    var 位数数组 = 第一次md5后_交换哪几位字符_可选值为1到32
    位数数组.forEach(function (item) {
        交换数组的两位内容(md5数组,0,item-1)
    })
    // 删位
    位数数组 = 第一次md5后_删掉哪几位字符_可选值为1到32
    位数数组.forEach(function (item) {
        md5数组[item-1] = "-1"
    })
    for(let i=md5数组.length-1; i>=0; i--){
        if(md5数组[i]=="-1"){
            md5数组.splice(i,1)
        }
    }
    第一次md5后的结果 = md5数组.join('')
    var 第二次md5后的结果 = md5(第一次md5后的结果)

    var 后缀 = 为了满足大小写和特殊字符_添加的后缀
    var 保留位数 = 密码长度 - 后缀.length
    var 最终密码 = 第二次md5后的结果.substr(0,保留位数) + 后缀
    最终密码 = 末尾补0(最终密码,密码长度)
    console.log("" + 自动获取的辅助秘钥_域名 + " 最终密码:")
    console.log(最终密码)

})();

function 末尾补0(最终密码,密码长度){
    if(最终密码.length >= 密码长度){
        return 最终密码
    }
    let 补几个0 = 密码长度 - 最终密码.length
    for(let i=0; i<补几个0; i++){
        最终密码 += "0"
    }
    return 最终密码
}

function 交换数组的两位内容(数组,第一位,第二位){
    let a = 数组[第一位]
    let b = 数组[第二位]
    数组.splice(第一位,1,b)
    数组.splice(第二位,1,a)
}