/* amper5and / secrets.js https://github.com/amper5and/secrets.js/ sssキーの生成 使い方 node sssEncode [share threshold] 秘密情報 */ var fs = require('fs'); var secrets = require('./secrets'); var argv = process.argv.map(function (val) { return val; }); if(argv.length<3){ console.log("秘密情報の入力がありません。"); return; } var sh=5;//シェア数 var th=3;//閾値 var pw="";//秘密情報 if(argv.length==3){ pw=argv[2]; } else if(argv.length==5){ sh=parseInt(argv[2]); th=parseInt(argv[3]); pw=argv[4]; } console.log("share="+sh+"\nthreshold="+th+"\n"+pw); //秘密情報をhex stringに変換 var pwHex = secrets.str2hex(pw); console.log(pwHex); //sssによる分散情報の作成 var shares = secrets.share(pwHex, sh, th); //分散情報のファイル書き込み for(var i=0;i<sh;i++){ fileSaveContents( "./s"+i+".txt" , shares[i] ); } console.log("秘密情報をシェア"+sh+"、閾値"+th+"で、分散保存しました。"); //ファイル書き込み function fileSaveContents( filename , str ){ var fs = require("fs"); var fileContent = ""; var fd = fs.openSync(filename, "w"); fs.writeSync(fd, str, 0, "utf8"); fs.closeSync(fd); return fileContent; }