如何让自己的密码更安全?

作者: 大邓和他的python | 来源:发表于2017-05-03 11:26 被阅读185次

    为什么要使用UUID?

    大数据时代,各种网站都需要你注册账号,使用密码。往往大家为了省事,所有的平台的账号密码是一样的,假如某个网站数据泄露后,那你的隐私安全就有问题了,干坏事的有心人就会去窃取你的隐私信息。
    市面上也有很多密码管理器,但是那是别人的密码管理器。生成规则是人家的,密码安全问题不能假手他人。
    为了安全,还是自己制定规则,管理自己的密码。

    准备工作

    大邓用的是python3.6,提前安装好了uuid库。
    我们先简单了解下uuid工作原理,后面会有一个大邓管理自己账号密码的代码(演示用,账号是真的,但是密码肯定不是大邓的)

    uuid库

    UUID Documents
    UUID是128位的全局唯一标识符,通常由32字节的字符串表示。
    它可以保证时间和空间的唯一性,也称为GUID,全称为:
    UUID —— Universally Unique IDentifier Python 中叫 UUID
    它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。
    UUID主要有五个算法,也就是五种方法来实现:

    uuid1()—基于时间戳

    由MAC地址、当前时间戳(当前时间)、随机数生成。可以保证全球范围内的唯一性

    import uuid
    for i in range(10):    
        print(uuid.uuid1())
    

    运行结果

    ddca8718-2f9f-11e7-a819-7c04d0d818f6
    ddca9e1a-2f9f-11e7-af4b-7c04d0d818f6
    ddcac162-2f9f-11e7-86c7-7c04d0d818f6
    ddcac638-2f9f-11e7-acfc-7c04d0d818f6
    ddcaccb4-2f9f-11e7-b86e-7c04d0d818f6
    ddcadfd8-2f9f-11e7-a3aa-7c04d0d818f6
    ddcae528-2f9f-11e7-83db-7c04d0d818f6
    ddcae92e-2f9f-11e7-adee-7c04d0d818f6
    ddcaede8-2f9f-11e7-bb6b-7c04d0d818f6
    ddcaf374-2f9f-11e7-9dbd-7c04d0d818f6
    

    uuid3()—基于名字的MD5散列值

    通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,
    和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。
    命名空间参数为uuid.NAMESPACEOID、uuid.NAMESPACEDNS、uuid.NAMESPACEURL、uuid.NAMESPACEX500

    names = ['Ruby','Python','Java','C','GO','Scala']for       
    name in names:     
    print(name,uuid.uuid3(uuid.NAMESPACE_OID, name))
    

    运行结果

    Ruby    aab9b591-c3ec-3f66-b4cb-203a5f6eaaf3
    Python fa01b787-98ed-334f-b44b-a14ca4b10aed
    Java    b055e743-a030-3094-99df-ae4b98964a50
    C        3ee5528d-3dbb-33cb-b910-f8215831ca48
    GO     c3724662-749e-35b8-9277-89d4a51c27a0
    Scala da8c34df-2de1-3033-97e2-16a324547aea
    

    uuid4()—基于随机数

    由伪随机数得到,有一定的重复概率,该概率可以计算出来。

    for i in range(5):    
        print(uuid.uuid4())
    

    运行结果

    de3e5a6c-2dd3-47dd-bace-13f6e78c1b9e
    b94e3965-a3e1-41d9-b994-b8c41fd2e5ca
    86f9d597-cd7e-446c-ad7e-ae20d2df33b9
    70b9a3ff-93bb-4fce-9908-4ad38869084c
    1d76ab15-0def-476e-a50f-760e550d6baa
    

    uuid5()—基于名字的SHA-1散列值

    算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法
    命名空间参数为uuid.NAMESPACEOID、uuid.NAMESPACEDNS、uuid.NAMESPACEURL、uuid.NAMESPACEX500

    urls = ['www.baidu.com',  'www.baidu.com', 'www.baidu.com.cn',      'www.sina.com']
    for url in urls:    
        print(uuid.uuid5(uuid.NAMESPACE_URL,url))
    

    运行结果

    8f2b1f65-47f4-5f18-91bc-322ea163bbb0
    8f2b1f65-47f4-5f18-91bc-322ea163bbb0
    04b04aa6-c18a-54d8-b6e7-4087984162ce
    3db2a294-d09f-558c-b0f2-976f4acb97a6
    

    如何管理我们的账号密码

    写一个脚本,放在自己电脑上,每个月定期更新密码。
    密码的生成规则你可以自己设计,这里我就用基于账号名生成

    accounts = ['微博:邓旭东HIT','微信:邓旭东','知乎:邓旭东HIT']
    def gen_pwd(accounts):    
    for account in accounts:        
        pwd=uuid.uuid5(uuid.NAMESPACE_OID, account)        
        print(account,'密码:%s'%pwd)
    gen_pwd(accounts)
    

    运行结果

    微博:邓旭东HIT 密码:c8155d00-205b-5cba-9d25-9947bd54df70
    微信:邓旭东 密码:67397b79-1245-5a08-9962-18757e52eb17
    知乎:邓旭东HIT 密码:4fc67722-5e5c-5df2-9a8b-694cf2af1bed
    

    密码太长,再简单点

    我们可以随机抽取10位字符,这里大邓简单点,直接截取[5:15]中的密码

    accounts = ['微博:邓旭东HIT','微信:邓旭东','知乎:邓旭东HIT']
    def     gen_pwd(accounts):    
    for account in accounts:        
        pwd=uuid.uuid5(uuid.NAMESPACE_OID, account)        
        pwd = str(pwd)[5:25]        
        print(account,'密码:%s'%pwd)
    gen_pwd(accounts)
    

    运行结果:

    微博:邓旭东HIT 密码:d00-205b-5cba-9d25-9
    微信:邓旭东 密码:b79-1245-5a08-9962-1
    知乎:邓旭东HIT 密码:722-5e5c-5df2-9a8b-6
    

    去掉-,再看看密码啥样子

    有“-”看着别扭,去掉

    accounts = ['微博:邓旭东HIT','微信:邓旭东','知乎:邓旭东HIT']
    def gen_pwd(accounts):    
    for account in accounts:        
        pwd=uuid.uuid5(uuid.NAMESPACE_OID, account)        
        pwd = str(pwd)[5:25].replace('-','')        
        print(account,'密码:%s'%pwd)
    gen_pwd(accounts)
    

    运行结果:

    微博:邓旭东HIT 密码:d00205b5cba9d259
    微信:邓旭东 密码:b7912455a0899621
    知乎:邓旭东HIT 密码:7225e5c5df29a8b6
    

    注意:

    要记得把代码放置在安全位置,
    避免因为规则泄露导致自己账号面临被盗风险
    而且也要定期修改密码规则


    更多内容
    文本分析
    python居然有情感??真的吗??
    文本分析之网络关系
    中文分词-jieba库知识大全
    自然语言处理库之snowNLP
    用gensim库做文本相似性分析
    基于共现发现人物关系的python实现
    用python计算两文档相似度
    数据分析
    酷炫的matplotlib
    文本分析之网络关系
    pandas库读取csv文件
    用词云图解读“于欢案”
    神奇的python
    初识Python的GUI编程
    怜香惜玉,我用python帮助办公室文秘
    逆天的量化交易分析库-tushare
    开扒皮自己微信的秘密
    8行代码实现微信聊天机器人
    使用Python登录QQ邮箱发送QQ邮件
    爬虫
    爬虫实战视频专辑
    【视频】手把手教你抓美女~
    当爬虫遭遇验证码,怎么办
    【视频】于欢案之网民的意见(1)?
    【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”
    【视频】快来get新技能--抓包+cookie,爬微博不再是梦
    【视频教程】用python批量抓取简书用户信息
    爬豆瓣电影名的小案例(附视频操作)
    爬豆瓣电影名的小案例2(附视频操作)
    用Python抓取百度地图里的店名,地址和联系方式


    支持一下


    相关文章

      网友评论

        本文标题:如何让自己的密码更安全?

        本文链接:https://www.haomeiwen.com/subject/ausktxtx.html