V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
wssy921
V2EX  ›  奇思妙想

有没有人自己做过密码管理软件,类似 1password 或者 lastpass。

  •  
  •   wssy921 · 2018-06-01 10:54:28 +08:00 · 7809 次点击
    这是一个创建于 2400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在需要记住的密码太多了,我以前都是使用 chrome 自带的密码记录工具,发现基本能满足使用。但是因为 google 的服务,在国内断断续续,所以有时保存的密码就没有上传。 可能就有部分网站或者软件的密码不记得。

    然后如果采取相同密码的策略的话,确实是不太安全。 又因为有很多密码管理软件曝出过数据泄露,所以一直想自己写一个密码管理软件。有没有大神有这方面的想法和思路,可以一起交流一下。

    44 条回复    2018-06-06 07:41:59 +08:00
    liyer
        1
    liyer  
       2018-06-01 11:07:40 +08:00   ❤️ 1
    用网站的域名做密码
    比如我在 v2 的密码就是 pswd@v2ex
    很好记,也不会忘
    zn
        2
    zn  
       2018-06-01 11:10:33 +08:00 via iPhone   ❤️ 6
    @liyer 嗯,your password is mine
    php01
        3
    php01  
       2018-06-01 11:14:03 +08:00
    我做了一个 openssl_decrypt 的,自己用,密码随机生成。有浏览器就能用,真正‘夸平台’(狗头)
    codeeer
        4
    codeeer  
       2018-06-01 11:17:59 +08:00 via iPhone
    N 年前我实现过,当时 Windows 是主力机,所以只考虑 Android 和 Windows 同步私钥,这东西技术不是难点,主要是使用体验和安全,即使是内网也不是绝对可靠。需要额外考虑的有:不是所有网站都支持特殊字符,所以需要加个随机的范围限定。
    nieyujiang
        5
    nieyujiang  
       2018-06-01 11:36:02 +08:00 via iPhone
    做白日梦的时候想过,然后睡醒了懒病复发,随即作罢
    dallaslu
        6
    dallaslu  
       2018-06-01 11:47:26 +08:00
    那就用 1password 或 LastPass 呗
    icemanpro
        7
    icemanpro  
       2018-06-01 11:48:28 +08:00
    keepass
    dosmlp
        8
    dosmlp  
       2018-06-01 11:48:37 +08:00
    曾经想过,仔细想想太懒了,反正有 keepass,于是作罢
    missdeer
        9
    missdeer  
       2018-06-01 11:52:27 +08:00
    做白日梦的时候想过,然后睡醒了懒病复发,在 todo list 里躺了几年了
    现在用 keepass
    jybox
        10
    jybox  
       2018-06-01 12:19:56 +08:00
    A password manager based on GPG and Git compatible with pass
    https://github.com/jysperm/elecpass
    input2output
        11
    input2output  
       2018-06-01 12:40:54 +08:00
    @liyer #1 我也类似
    imn1
        12
    imn1  
       2018-06-01 13:01:25 +08:00
    我没有做密码管理软件,但写了一个 js
    思路很简单,不保存任何密码
    用一个公共 key 或者自己能记住的多个 key,key 也是不保存的,自己脑子记
    根据预存的参数(域名、账户、时间等可读取的信息),每次计算出密码,js 控制自动填入
    key、参数、算法固定的话,每次算出来都一样的,要更换密码时,换一个可变参数(例如时间)就行了

    因为不保存密码,甚至不经剪贴板,而且,算法部分的程序只放在本地,除非物理入侵获取算法

    不过手机是个问题,还好我是轻度用户,手机上只有几个需要密码的场合,基本都记得
    rekulas
        13
    rekulas  
       2018-06-01 13:12:38 +08:00   ❤️ 1
    我以前也有类似想法,但是自己写的话工作量不小,还要管理好备份这些,最终用户可能只有几个人,算了下不划算
    所以我针对 lastpass 进行了点修改,用 lastpass 的服务器来存储自己的密码,原理就是在 lastpass 加密之前先自己做一个预加密,安全性暴增

    https://github.com/del-xiong/lastpass_dopass
    sangmong
        14
    sangmong  
       2018-06-01 13:52:34 +08:00
    我想知道密码存在服务器安全还是存在本地安全?
    sephinh
        15
    sephinh  
       2018-06-01 13:56:27 +08:00 via iPhone
    keepass 够用了啊,数据库本地
    wssy921
        16
    wssy921  
    OP
       2018-06-01 14:00:16 +08:00
    @liyer 其实域名也可能会变的。
    wssy921
        17
    wssy921  
    OP
       2018-06-01 14:01:44 +08:00
    @dallaslu 第三方的密码工具曝光过数据泄露的风险。还有总感觉密码交给第三方云端不是很安全。
    wssy921
        18
    wssy921  
    OP
       2018-06-01 14:03:52 +08:00
    @rekulas 你这个思路很好啊,站在巨人的肩膀上[doge]
    wssy921
        19
    wssy921  
    OP
       2018-06-01 14:04:30 +08:00
    @imn1 你的是油猴脚本吗?
    imn1
        20
    imn1  
       2018-06-01 14:36:44 +08:00
    @wssy921
    开始是油猴,后来改 pentadactly 的 plugin 了,直接敲命令比点鼠标方便,而且浏览器级比网页级脚本安全些

    firefox quantum 没有浏览器级脚本,可能要考虑另外的方式了
    还好不是太复杂(指程序写法),手头还有 ps/py 两种版本,就算外部运行通过剪贴板操作也不太麻烦
    Firxiao
        21
    Firxiao  
       2018-06-01 15:22:23 +08:00
    如果你是 apple 全家桶的话 自带的密码保存很好用 同步全平台
    pipicat
        22
    pipicat  
       2018-06-01 15:48:12 +08:00
    第三方密码暴露问题,你可以通过不明文账号的形式。我账号基本都是用代号。1password
    waytocode
        23
    waytocode  
       2018-06-01 15:57:08 +08:00
    再造个轮子?
    qiutianaimeili
        24
    qiutianaimeili  
       2018-06-01 17:19:05 +08:00
    和你有过同样的困惑,我使用 xor 来进行加密 /解密的,具体的可以看看 http://qiutianaimeili.com/html/page/2017/10/ctf8kzjmc2g.html
    phithon
        25
    phithon  
       2018-06-01 17:32:59 +08:00
    大二刚学 MFC 的时候做过一个丑陋的
    https://github.com/phith0n/PasswordKeeper
    loveour
        26
    loveour  
       2018-06-01 19:41:30 +08:00
    我自己写过一个工具,我计算了一个文件的 HASH 值,用这个值去加密域名+我自己设置的一个短语,得出来的字符串按照一个规律截取一部分作为密码,这样,我只要保存好这个文件,记住短语,密码就不会忘掉的,不需要记在哪里。
    cxbig
        27
    cxbig  
       2018-06-01 20:53:08 +08:00
    免费的 KeePassXC
    收费的 1Password
    ve2y
        28
    ve2y  
       2018-06-01 21:15:06 +08:00
    bitwarden 了解一下
    Foolt
        29
    Foolt  
       2018-06-01 22:39:04 +08:00
    @liyer 直接用域名明文等于没用,社工一眼就能看出规则。
    Foolt
        30
    Foolt  
       2018-06-01 22:52:18 +08:00
    不用密码管理器也能记得不同密码。

    方法很简单,自己设计一条公式即可。

    设计一条公式,把应用名称首字母作为公式变量,然后做一个简单加密,好记,一般人也破解不了。

    比如说 V2EX 首字母是 v,在电脑和手机都有的全键盘中排在第 3 排第 4 位,而 v 平行左上角对应的数字是 4,从数字 4 与 v 的距离是 2,这些变量都不用自己记得,看一眼全键盘就能算出来,轻松实现不同字母开头的应用不同密码。

    是不是有人觉得容易破解?

    我来出一题,根据未知的公式算出来 V2EX 的密码是 127@Vv@134061,请问公式是什么?
    woncode
        31
    woncode  
       2018-06-01 23:19:13 +08:00 via Android
    @Foolt 不错哦
    NikiLauda
        32
    NikiLauda  
       2018-06-01 23:23:49 +08:00
    难道没有用 onenote 记密码的朋友吗,onenote 里面的分区可以单独设立密码,足够安全。
    xenme
        33
    xenme  
       2018-06-01 23:27:39 +08:00 via iPhone
    @Foolt 问题是很多地方有的要求只能能 6 位,有的要求很长,有的只能数字和英文字母,有的要求必须带符号,还有特殊符号不允许某些符号的。


    反正是太多了,用密码管理工具都得调整密码强度才能通过,自己设计的规则估计你到时候就搞不清了,所以简单点就是自己记几个密码而已。
    Foolt
        34
    Foolt  
       2018-06-01 23:32:27 +08:00 via Android
    @xenme 六位数字的也可以定一个规则啊,除了支付密码基本用到六位数的。不允许特殊符号的更少,我用这个方法很久了,印象中也就 12306 不允许特殊符号,长度不符合的还没遇到过。
    AltairT
        35
    AltairT  
       2018-06-01 23:54:11 +08:00 via iPhone
    @imn1 我跟你差不多,不过我懒得写一个摘要规则了,直接用的花密那套。
    只不过帐号本多处同步,记住种子就行(就两位)。
    msg7086
        36
    msg7086  
       2018-06-02 00:02:33 +08:00
    我自认为水平比那些密码大厂的工程师菜,所以我都是交给他们来管理密码的。
    lastpass 用的是 AES-256,我就算现在把我的整个加密的 vault 给你,等到宇宙毁灭的那时候你都不一定能拿到我的 v 站密码。
    easylee
        37
    easylee  
       2018-06-02 00:24:48 +08:00 via Android
    上大学那会儿正好爆发各种安全问题,自己便决定拟定规则作为种子然后计算密码,从来不保存密码,忘记了的话重新计算就好。

    这么多年了一直用到现在。
    mrcode
        38
    mrcode  
       2018-06-02 01:16:19 +08:00
    @easylee 一样的,想一个简单的算法。哈哈
    geelaw
        39
    geelaw  
       2018-06-02 08:25:23 +08:00 via iPhone
    🙄 看完楼上的土法密码学之后的我
    moxxun
        40
    moxxun  
       2018-06-02 08:54:30 +08:00 via iPhone
    masterpassword
    deali
        41
    deali  
       2018-06-02 10:52:00 +08:00
    之前用 Windows 的时候用 C#写了一个密码管理器,可以生成随机密码。
    https://github.com/Deali-Axy/PassNote

    现在不用 Windows 了,打算用 django 写一个 web 版的。
    Eugene1024
        42
    Eugene1024  
       2018-06-02 14:41:16 +08:00
    说实话,我很早就有这个想法,注册过数十个交网站和软件,这些网站或者软件密码规则不一样,下一次登陆的时候谁还记得当初密码是多少位的,而且密码很多,所以经常记不住密码,通常都是手机号找回,我想到设计一款密码工具,能让我跨平台使用的能帮我记住在各个网站或者软件上的密码,忘记的时候,打开这个软件,自动识别软件是啥,自动输入密码,点击登录,让一切变的简单;让生活更加美好,想象力有点丰富,这个想法不太可行被我否决了。
    然后就想不出什么好的方法了,最多就是开发个小工具能让自己有时候跨平台打开看一下,密码是啥,当然密码是被我自己混淆加密过的,网站名也是。目前就这样,更简单的是笔记本记录。没有从根本上解决这个问题
    zhu921020
        43
    zhu921020  
       2018-06-02 15:59:43 +08:00
    我用 lastpass 自动生成,小网站就直接使用,重要点的我就会在 lastpass 生成的密码里面加入几个数字,lastpass 密码管理器里面只保存生成的密码,不保存自己后加的数字,这样就可以完美解决了
    zjyl1994
        44
    zjyl1994  
       2018-06-06 07:41:59 +08:00 via Android
    有个方案,md5(主密码+网站名字),得到的结果再处理一下大小写。做成个纯前端网站就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:30 · PVG 13:30 · LAX 21:30 · JFK 00:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.