30 行 js 你能做出什么?

1,553 阅读1分钟
原文链接: segmentfault.com

生成一個足夠安全同時相對好記(如果你的英語詞彙量足夠大的話)的密碼。

靈感來自 這則xkcd漫畫

30行好難寫啊!寫了半天沒寫滿,加了註釋還是不滿30行。
沒辦法,只好再補一個python的版本填滿30行。

// by Jakukyo Friel 
// under Apache License v2

// Yet another random passphrase generator.
// Inspired by http://xkcd.com/936/
// But I use 5 words instead of 4, since 5 words will achieve an entropy of
//    log(99171)/log(2)*5 = 82.988
// This is enough.
// NIST recommends 80-bits for the most secure passwords.


var fs = require('fs');
var pickrand = require('pickrand')
var wordlist = fs.readFileSync('/usr/share/dict/words').toString().split("\n");

generate_random_passwd = function() {
  pickrand(wordlist)
  for (var i=0;i<5;i++) 30="" {="" Avoid="" characetr="" `'`="" in="" passphrase,="" since="" some="" broken^W="" websites="" does="" not="" support="" it.="" process.stdout.write(pickrand(wordlist).replace(="" '="" g,="" '').replace(="" \n$="" ,="" ''))="" };="" generate_random_passwd()="" A="" python="" version="" I="" wrote="" before.="" (To="" fill="" lines.)="" import="" random="" wordlist="open('/usr/share/dict/words').readlines()" pick="lambda" :="" random.choice(wordlist)="" for="" i="" range(5):="" print(pick().replace('\'',="" '').strip(),="" end="" )="" <="" code=""/>

使用方法:

將上述代碼保存爲文件,比如generate_pass.js,然後node運行即可:

node generate_pass.js

依賴:

  • pickrand模塊,可用 npm install pickrand安裝。
  • 因爲供抽取的詞彙來自系統自帶的詞典,所以需要在unix系統上運行。