zoukankan      html  css  js  c++  java
  • 五、python中MD5加密


    import hashlib

    '''
    用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
    '''
    ##############MD5#################
    def func_MD5(string):
    hash=hashlib.md5()
    hash.update(string)
    m=hash.hexdigest()
    print (m)
    func_MD5("123")

    ######## sha1 #####################
    def func_sha1(string):
    hash = hashlib.sha1()
    hash.update(bytes(string))
    print(hash.hexdigest())
    func_sha1("123")
    # ######## sha256 ########
    def func_sha256(string):
    hash = hashlib.sha256()
    hash.update(bytes(string))
    print(hash.hexdigest())
    func_sha256("123")
    # ######## sha384 ########
    def func_sha384(string):
    hash = hashlib.sha384()
    hash.update(bytes(string))
    print(hash.hexdigest())
    func_sha384("123")
    # ######## sha512 ########
    def func_sha512(string):
    hash = hashlib.sha512()
    hash.update(bytes(string))
    print(hash.hexdigest())

    func_sha512("123")
    '''
    以上加密算法虽然厉害,但存在缺陷,可通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
    '''

    def func_MD5_deep(string):
    hash=hashlib.md5(bytes("sdfgdfsgsdf")) #key加密
    hash.update(string)
    m=hash.hexdigest()
    print(m)

    func_MD5_deep("123")
    -----------------------------------------------------------------

       202cb962ac59075b964b07152d234b70
       40bd001563085fc35165329ea1ff5c5ecbdbbeef
       a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
       9a0a82f0c0cf31470d7affede3406cc9aa8410671520b727044eda15b4c25532a9b5cd8aaf9cec4919d76255b6bfb00f
       3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2
       066290ee749d0cc66116a3f55ecc241c

    -----------------------------------------------------------------
    '''
    练习题:注册登录加密函数
    '''
    def fun_md5(arg):
    hash=hashlib.md5(bytes("1232..gg"))
    hash.update(arg)
    m=hash.hexdigest()
    return m

    def register(user2,pwd2):
    with open("denglu.db","wb") as f:
    temp=user2+"|"+fun_md5(pwd2)
    f.write(temp)
    def login(user1,pwd1):
    with open("denglu.db","r") as f:
    for line in f:
    a,b=line.strip().split("|")
    if user1==a and fun_md5(pwd1)==b:
    print("登录成功!")
    else:
    print("用户名和密码不匹配!")
    def func():
    temp=input("1:登录,2注册")
    if temp==1:
    user = raw_input("请输入用户名:")
    pwd = raw_input("请输入密码:")
    login(user,pwd)
    else:
    user = raw_input("请输入用户名:")
    pwd = raw_input("请输入密码:")
    register(user,pwd)

    func()
  • 相关阅读:
    salmon 报错:ESC[00mException : [rapidjson internal assertion failure: IsObject()] salmon quant was invoked improperly.
    报错:RSEM can not recognize reference sequence name chr1!(基因组的bam不能直接用rsem进行表达值计算)
    R: 使用tapply根据相同ID合并指定列
    linux:去除特定列为空格的行
    知乎一答:程序员为什么要关注管理
    如何掌握一门编程语言的运用
    谈谈程序员这个职业及前景
    Oracle学习笔记(2)--Centos 7 下11gR2部署
    用flask写一个简单的接口
    iptables命令详解
  • 原文地址:https://www.cnblogs.com/chushujin/p/9294155.html
Copyright © 2011-2022 走看看