[{"data":1,"prerenderedAt":226},["ShallowReactive",2],{"project-22048080":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":37,"post_text":39,"what":40,"said":51,"maker_in_thread":139,"shape":146,"grid":150,"attempts":190,"same_week":191,"maker_shows":33,"maker_hidden":218,"reader_version":219,"card":220},"22048080","html-vault","create self-contained HTML for password protected content","title","Show HN: html-vault – create self-contained HTML for password protected content","https:\u002F\u002Fgithub.com\u002Fdividuum\u002Fhtml-vault","github.com","dividuum",1579028424,2020,55,21,1013,3028,34,"notable","security_privacy","encrypted html pages","other",[24,25,26,27],"password protected html","self-contained html","pbkdf2 encryption","browser encryption","roasted",-0.357,{"positive":31,"neutral":32,"mixed":32,"critical":33},0,1,4,6,{"performance":36},{"positive":31,"critical":33},[31,31,31,38,31,31,31,31,31,31,32,31,31,32,31,32,38,31,32,31,31],3,null,{"problem":39,"audience":39,"pricing":39,"motivation":41,"time_to_build":39,"stack":48,"openness":49,"stage":50,"team_size":50},{"value":42,"source":43,"evidence":44},"Bootstrap yourself in case everything gets lost","maker",[45],{"id":46,"by":11,"text":47},"22053342","Indeed. The project motivation is even similar to mine (bootstrap yourself in case everything gets lost). I guess the main difference between the two is that I tried to make the…",[],"open_source","unknown",{"praise":52,"objections":80,"requests":98,"questions":112,"alternatives":119},[53,65],{"value":54,"source":55,"evidence":56},"Useful and works well","commenter",[57,61],{"id":58,"by":59,"text":60},"22049037","bmsleight_","Works, but takes a little while. Nice -useful",{"id":62,"by":63,"text":64},"22052685","Tepix","I like it! Works well. Do you see a way to reduce the required code?",{"value":66,"source":55,"evidence":67},"Similar tools exist with the same idea",[68,72,76],{"id":69,"by":70,"text":71},"22049206","camsjams","Nice! I made something similar to this: https:\u002F\u002Fgithub.com\u002Fcamsjams\u002Fmr-roboto With a slight difference, it works 100% in the browser, you can use it here:…",{"id":73,"by":74,"text":75},"22051223","maxlaumeister","Hey! I also made something similar to this (uses a password-derived key to create protected, self-contained HTML). https:\u002F\u002Fwww.maxlaumeister.com\u002Fpagecrypt\u002F Mine was originally…",{"id":77,"by":78,"text":79},"22053081","sowbug","Similar: https:\u002F\u002Fgithub.com\u002Fsowbug\u002Fquaid",[81],{"value":82,"source":55,"evidence":83},"Key derivation is too slow in the browser",[84,87,91,94],{"id":85,"by":63,"text":86},"22052616","It took way too long on my laptop (i5-6200U). With a decent random password (say, 14 letters), the search space will be very large. If a determined attacker (with a couple of…",{"id":88,"by":89,"text":90},"22048886","eitland","This might take a moment it said but I think I waited two minutes with no result in sight.",{"id":92,"by":89,"text":93},"22051665","Recent release of Firefox, on a developer laptop. Edit: add more details.",{"id":95,"by":96,"text":97},"22051099","mc3","By design? Or running code in the browser is inefficient? (not your fault, that's the way it is) Keepass (Desktop app) for example doesn't take ages to open.",[99,106],{"value":100,"source":55,"evidence":101},"Make the number of PBKDF2 rounds configurable",[102,103],{"id":85,"by":63,"text":86},{"id":104,"by":11,"text":105},"22053359","Yes: By design. This helps make brute forcing the password harder by forcing each attempt to take a while. The crypto implementation in the browser itself is pretty fast. You can…",{"value":107,"source":55,"evidence":108},"Use the Web Crypto API to reduce code size",[109],{"id":110,"by":63,"text":111},"22073107","Looks like your code predates the Web Crypto API, so switching over to that should get rid of more than half the code. Right?",[113],{"value":114,"source":55,"evidence":115},"Was scrypt.js performance measured against PBKDF2",[116],{"id":117,"by":11,"text":118},"22050099","Nice. Did you measure the performance of scrypt.js? The PBKDF2 implementation in Python and both Chrome\u002FFirefox are similar for me and the Python documentation states something…",[120,127,131,135],{"value":121,"source":55,"evidence":122},"emojicrypt.com",[123],{"id":124,"by":125,"text":126},"22049704","aurorabbit","On the topic of toy web crypto projects, here's mine: https:\u002F\u002Femojicrypt.com\u002F It offers scrypt + aes-gcm, encoded into 256 emoji; all the crypto is in…",{"value":128,"source":55,"evidence":129},"mr-roboto",[130],{"id":69,"by":70,"text":71},{"value":132,"source":55,"evidence":133},"pagecrypt",[134],{"id":73,"by":74,"text":75},{"value":136,"source":55,"evidence":137},"quaid",[138],{"id":77,"by":78,"text":79},{"comments":34,"answered":32,"key":140},[141,142,145],{"id":117,"text":118},{"id":143,"text":144},"22049494","Nice. I guess the big difference is the key used for the symmetric encryption. I'm using PBKDF2 to derive the final key to make it harder to brute force in case you get the HTML…",{"id":46,"text":47},{"commenters":147,"max_depth":33,"maker_replies":34,"first_comment_mins":148,"lifespan_hours":149},10,84,62,[151,153,156,158,160,161,163,165,167,169,170,172,173,175,177,179,180,182,184,185,189],[124,31,31,152,125,31],"commenter\u002Fneutral\u002Fidea",[154,31,31,155,125,31],"22050041","other\u002Fneutral\u002Fnone",[117,31,31,157,11,32],"maker\u002Fneutral\u002Fperformance",[159,31,38,157,125,31],"22050293",[69,32,31,152,70,31],[143,32,31,162,11,32],"commenter\u002Fneutral\u002Fprivacy",[73,164,31,152,74,31],2,[62,164,31,166,63,31],"commenter\u002Fneutral\u002Fexecution",[168,164,31,166,74,31],"22059643",[110,164,31,166,63,31],[85,38,32,171,63,31],"project\u002Fcritical\u002Fperformance",[77,33,31,152,78,31],[46,33,31,174,11,32],"maker\u002Fneutral\u002Fdesign",[88,176,32,171,89,31],5,[178,176,31,157,11,32],"22048925",[92,176,32,171,89,31],[58,34,38,181,59,31],"project\u002Fmixed\u002Fperformance",[183,34,31,157,11,32],"22049102",[95,34,32,171,96,31],[186,34,31,187,188,31],"22051130","commenter\u002Fneutral\u002Fperformance","brokensegue",[104,34,31,157,11,32],[],[192,197,202,207,211,214],{"id":193,"name":194,"points":195,"category":196},"22045053","Diary Email",515,"productivity",{"id":198,"name":199,"points":200,"category":201},"22027177","Podnami",340,"consumer_social",{"id":203,"name":204,"points":205,"category":206},"22044198","Cantools",220,"dev_tools",{"id":208,"name":209,"points":210,"category":196},"21998632","Ryeboard",185,{"id":212,"name":213,"points":210,"category":206},"22044368","Gter",{"id":215,"name":216,"points":217,"category":206},"22005495","Lucidity",184,false,"v2",{"id":221,"name":5,"line":6,"ai":218,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":222,"top":18,"kw":223,"maker":11,"domain":10,"tier":19,"attempts":31,"strip":224,"url":9,"mix":225,"praise":54,"objection":82,"sub":21},22048080,-0.36,[24,25,26,27],"000300000010010130100",[31,32,32,33],1794036585433]