跳转至

密码短语在线生成器

怎样生成一个安全可靠且容易记忆的密码?

一直困扰着我,很多时候为了安全生成了一个非常随机的密码, 结果是别人可能猜不到,同时自己也记不得了...
当我看到一句话密码/短语密码,才真正找到了答案

一句话密码或密码短语

将一个句子变成一个容易记忆的密码

比如我爱你祖国
变成密码是
Woainizuguo,1
WANZg,1

完全是自己发挥想象,只要记住原句子,在加上自己修饰的规则,就是一个密码

在线生成短语密码-javascript版本

短语密码设计

  • 采用中国4字成语作为"句子"
  • 将成语拼音使用特殊字符分隔
  • 添加个随机数字

短语密码实现

成语变词云

为了便于用户选择成语,将成语生成词云,用户点击某个词,表示选中

javascript 词云库 使用该库,即可生成词云

var chengyu = '满城风雨,毛遂自荐';
var datalist=[];

var keywords = chengyu.split(',').slice(1,15); 

for (var name in keywords) {    
    datalist.push({
        name: keywords[name],
        value: Math.floor(Math.random() * 9)  //随机大小
    })
}
// 词云配置信息 
ciyuntu.setOption(option = {
    tooltip : {},
    series : [{
        type : 'wordCloud',
        gridSize : 20,
        sizeRange : [ 12, 50 ],
        rotationRange : [ 0, 0 ],
        shape : 'circle',
        left : 'center',
        textStyle : {
            normal : {
                color : function() {
                    return 'rgb('
                            + [ Math.round(Math.random() * 320),
                                    Math.round(Math.random() * 320),
                                    Math.round(Math.random() * 320) ]
                                    .join(',') + ')';
                }
            },
            emphasis : {
                shadowBlur : 10,
                shadowColor : '#333'
            }
        },
        data : datalist
    }]
});


//添加点击事件,获取自定义属性
ciyuntu.on('click',function(params){
        var name = params.data.name;
        var value = params.data.value;
        createMimi(name);   //点击时 自动生成密码 

});
//图表自适应
window.onresize = function () {
    ciyuntu.resize();
}

更多例子,可以参考 基于echarts的词云图,点击词云图,获取自定义属性

汉字转拼音

需要将词语的每个汉字转成拼音,使用的pinyinjs

由于需求比较简单,所以只需要官方的这两个API即可

/**
 * 获取汉字的拼音首字母
 * @param str 汉字字符串,如果遇到非汉字则原样返回
 * @param polyphone 是否支持多音字,默认false,如果为true,会返回所有可能的组合数组
 */
pinyinUtil.getFirstLetter(str, polyphone);
/**
 * 根据汉字获取拼音,如果不是汉字直接返回原字符
 * @param str 要转换的汉字
 * @param splitter 分隔字符,默认用空格分隔
 * @param withtone 返回结果是否包含声调,默认是
 * @param polyphone 是否支持多音字,默认否
*/
pinyinUtil.getPinyin(str, splitter, withtone, polyphone);
/**
 * 拼音转汉字,只支持单个汉字,返回所有匹配的汉字组合
 * @param pinyin 单个汉字的拼音,不能包含声调
 */
pinyinUtil.getHanzi(pinyin);

getPinyin 支持输入分隔符参数,所以直接设置特殊字符为分隔符即可

封装成密码短语

一个安全的密码一般是
长度大于8位
包括大小写字母,数字,特殊字符

因此将上述生成的密码进行简单转换即可生成安全密码

密码短语上线

整个功能都是使用javascript进行实现,因此最终将该功能封装成一个html文件,需要的第三方依赖,通过jsdelivr github进行代理即可

最终上线地址密码短语在线生成器