精华内容
下载资源
问答
  • 本文实例讲述了python文件的md5加密方法。分享给大家供大家参考,具体如下: 简单模式: from hashlib import md5 def md5_file(name): m = md5() a_file = open(name, 'rb') #需要使用二进制格式读取...
  • python中md5加密的实现

    千次阅读 2021-01-11 19:39:43
    python中md5加密的实现 MD5消息摘要算法:(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要...

    python中md5加密的实现

    MD5消息摘要算法:(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

    摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

    在python3的标准库中,已经移除了md5模块,而关于hash加密算法都放在hashlib这个标准库中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。

    示例代码(一):

    import hashlib
    
    # 待加密信息
    str = 'this is a md5 Test.'
    
    # 创建md5对象
    hl = hashlib.md5()
    
    # Tips
    # 此处必须声明encode
    # 若写法为hl.update(str) 报错为: Unicode-objects must be encoded before hashing
    hl.update(str.encode(encoding='utf-8'))
    
    print('MD5加密前为 :' + str)
    print('MD5加密后为 :' + hl.hexdigest())
    

    运行结果:

    MD5加密前为 :this is a md5 Test.
    MD5加密后为 :d3e616f6b5be276111f227c80b4ec516

    示例代码(二):

    import hashlib
    
    str = 'this is a md5 Test.'
    str_md5 = hashlib.md5(str.encode(encoding='utf-8')).hexdigest()
    print(str_md5)
    
    

    运行结果:

    d3e616f6b5be276111f227c80b4ec516

    示例代码(三):

    import hashlib
    
    def computeMD5(message):
        m = hashlib.md5()
        m.update(message.encode(encoding='utf-8'))
        return m.hexdigest()
    
    str = 'this is a md5 Test.'
    print(computeMD5(str))
    

    运行结果:

    d3e616f6b5be276111f227c80b4ec516

    【md5补充代码】

    import hashlib
    
    data = 'hoahaoxuexi,tiantianxiangshang!'
    
    #  创建hash对象
    md5 = hashlib.md5()
    
    #  向hash对象中添加需要做hash运算的字符串
    md5.update(data.encode())   #  这个地方传的是bytes类型的数据,否则会报错
    
    #  获取字符串的hash值
    result = md5.hexdigest()
    print(result)

    运行效果:

    【md5一旦加密,数据就不能返回成原来的值了,是不可以解密的】【对于同一个字符串稍微做一点修改,加密后的哈希值变化是很大的】

     

    展开全文
  • Linux MD5加密的简单使用

    千次阅读 2020-08-14 10:50:36
    文章目录一. 什么是MD5二. Linux下的简单实现三....后来了解到了MD5加密,虽然不是很懂其内部算法原理,但是用起来还是很好用的. 一. 什么是MD5 MD5消息摘要算法(英语:MD5 Message-Digest Algorit


    最近看到PPP拨号在验证时,有两种验证方式,一种是口令验证协商(PAP),另一种是挑战-握手验证协议(CHAP),因为最近在做的一个项目,其中也用到了客户端登录验证连接服务器的这样一个方式,所以也想对客户端发送的用户名与密码信息进行加密后传输,避免明文的直接传递。后来了解到了MD5加密,虽然不是很懂其内部算法原理,但是用起来还是很好用的.

    一. 什么是MD5

    MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
    密码散列函数(Cryptographic hash function),又译为加密散列函数,是散列函数的一种。
    MD4算法在安全上有大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用,比如MD5加密算法.

    功能

    输入任意长度的信息,经过处理,输出都是128位的信息值不同的输入对应的输出一定不同,保证唯一性

    争议

    MD5属不属于加密算法,因为只可以加密,无法获得密码原文,只能属于算法。
    另一种观点,正因为看不到原文,使得原文得到加密处理。
    个人观点:对于公司的用户,采用MD5是可以放心的,第一,对于黑色截获MD5后很难破解。第二,对于商家内部,只能获得用户加密后的密文,无法看到用户的真实密码,这也是对用户信息的一定保护。

    MD5的优势

    防止被篡改,在传输过程中一旦被串改,那么计算出的MD5值一定不同。
    计算速度快。加密速度快,不需要秘钥。
    检查文件的完整性,一旦文件被更改,MD5值也是不同的。
    防止看到明文,公司存放密码存放的是MD5值。
    防止抵赖,用于数字签名,一旦用户的文件被第三方MD5加密,若以后A说这个文件不是他写的,那么当用文件MD5后获得的签名一致,可以确认。

    二. Linux下的简单实现

    MD5加密系列的函数位于Linux下 /usr/include/openssl 这个文件夹下

    在这里插入图片描述
    使用起来很简单,主要用到三个函数

    1. void MD5_Init(MD5_CTX *ctx);
      参数需要传一个MD5_CTX类型结构的地址,Md5Ctx将在后面的函数中用到.
      其结构如下:
    typedef struct {
        MD5_u32plus lo, hi;
        MD5_u32plus a, b, c, d;
        unsigned char buffer[64];  //未加密的明文
        MD5_u32plus block[16];   //加密后的128位密文
    } MD5_CTX;
    
    1. void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
      这个函数用来加密我们传进来的字符串,并保存到结构体成员中;

    2. void MD5_Final(unsigned char *result, MD5_CTX *ctx);
      获取已加密的密文

    把三个函数封装

    /*********************************************************************************
     *
     * Function:   void md5_encryption(const char *unencrypted_buf,int unencrypted_buf_len,char *encrypted_buf,int encrypted_buf_size)
     *    
     *   Parameter:   const char *unencrypted_buf     -     Encrypted data  
     *    
     *                int unencrypted_buf_len         -     The length of unencrypted_buf 
     *    
     *                char *encrypted_buf             -     Used to store encrypted ciphertext
     *    
     *                int encrypted_buf_size          -     The length of encrypted_buf
     *    
     * Description:   Use the incoming plaintext to encrypt and save to encrypted_buf
     *    
     *      Return:   void
     *
     *********************************************************************************/
    
    void md5_encryption(const char *unencrypted_buf,int unencrypted_buf_len,char *encrypted_buf,int encrypted_buf_size)
    {
    
        MD5_CTX               Md5Ctx;
    
    
        MD5_Init(&Md5Ctx);  //初始化
    
        MD5_Update(&Md5Ctx, (unsigned char *)encrypted_buf, unencrypted_buf_len); //md5加密
    
        MD5_Final(encrypted_buf, &Md5Ctx);
    
    }
    
    

    三. 测试

    下面是我自己写的一个链表,主要是服务器用来保存客户信息的,在项目中,其原理是:
    服务器在收到客户端登录验证的密文后,对链表进行遍历,并对链表中已有的用户名与密码进行相同MD5加密后与客户端传来的密文进行比较,从而实现登录验证。
    在这里插入图片描述
    链表中找到:
    在这里插入图片描述
    修改以后:
    在这里插入图片描述

    展开全文
  • Python3中的md5加密

    万次阅读 多人点赞 2018-09-10 16:39:42
    Python3中的md5加密 md5介绍 在写网络爬虫模拟登陆时,遇到提交表单时是一串数字和字母,才知道经过了md5加密。 ...md5加密的密码 ...MD5消息摘要算法(英语:MD5 Message-Digest ...MD5是最常见的摘要算法,速度很...

    md5介绍

    在写网络爬虫模拟登陆时,遇到提交表单时是一串数字和字母,才知道经过了md5加密。

    这里写图片描述
    md5加密的密码

    MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

    摘要算法的应用

    任何允许用户登录的网站都会存储用户登录的用户名和口令。用户名和口令存到数据库表中。

    name    | password
    --------+----------
    michael | 123456
    bob     | abc999

    如果以明文保存用户口令,如果数据库泄露,所有用户的口令就落入黑客的手里。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的口令。

    正确的保存口令的方式是不存储用户的明文口令,而是存储用户口令的摘要,比如MD5:

    username | password
    ---------+---------------------------------
    michael  | e10adc3949ba59abbe56e057f20f883e
    bob      | 878ef96e86145580c38c87f0410ad153

    当用户登录时,首先计算用户输入的明文口令的MD5,然后和数据库存储的MD5对比,如果一致,说明口令输入正确,如果不一致,口令肯定错误。这样即使运维人员能访问数据库,也无法获知用户的明文口令。

    hashlib介绍

    Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

    摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

    在python3的标准库中,已经移除了md5模块,而关于hash加密算法都放在hashlib这个标准库中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。

    python3的hashlib官方文档(英文)

    使用hashlib库进行md5加密

    # 由于MD5模块在python3中被移除
    # 在python3中使用hashlib模块进行md5操作
    
    import hashlib
    
    # 待加密信息
    str = 'this is a md5 test.'
    
    # 创建md5对象
    m = hashlib.md5()
    
    # Tips
    # 此处必须encode
    # 若写法为m.update(str)  报错为: Unicode-objects must be encoded before hashing
    # 因为python3里默认的str是unicode
    # 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes
    b = str.encode(encoding='utf-8')
    m.update(b)
    str_md5 = m.hexdigest()
    
    print('MD5加密前为 :' + str)
    print('MD5加密后为 :' + str_md5)
    
    # 另一种写法:b‘’前缀代表的就是bytes
    str_md5 = hashlib.md5(b'this is a md5 test.').hexdigest()
    print('MD5加密后为 :' + str_md5)

    运行结果

    这里写图片描述
    英文加密,可以使用b' '前缀。

    如果要对中文加密,使用b' '前缀来写会报错,原因在于字符转码问题,b' '在python中只能对ASCII字符进行转码。

    这里写图片描述
    要用encode(encoding='utf-8')将中文转码成UTF-8:

    >>> import hashlib
    >>> data = '你好'
    >>> hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()
    '7eca689f0d3389d9dea66ae112e5cfd7'

    其它中文编码md5加密

    可以看到GBK、GB2312、GB18030编码的加密结果相同,而与UTF-8的加密结果不同。

    >>> hashlib.md5('你好'.encode(encoding='UTF-8')).hexdigest()
    '7eca689f0d3389d9dea66ae112e5cfd7'
    
    >>> hashlib.md5('你好'.encode(encoding='GBK')).hexdigest()
    'b94ae3c6d892b29cf48d9bea819b27b9'
    
    >>> hashlib.md5('你好'.encode(encoding='GB2312')).hexdigest()
    'b94ae3c6d892b29cf48d9bea819b27b9'
    
    >>> hashlib.md5('你好'.encode(encoding='GB18030')).hexdigest()
    'b94ae3c6d892b29cf48d9bea819b27b9'

    关于每个方法的解析,可以参考:

    CSDN:python3中的md5加密

    关于python编码、encode、decode的内容,可以参考:

    廖雪峰python教程:字符串和编码

    CSDN:python中的encode()和decode()函数

    CSDN:python3大作战之encode与decode讲解

    参考链接

    CSDN:Python之MD5加密

    CSDN:python3中的md5加密

    廖雪峰python教程:hashlib

    展开全文
  •        数据库加密系统是一款...加解密速度要求足够快,这样能够减少影响数据操作响应时间。 加密强度足够大,保证大部分数据长时间不被破译。但是在实际应用中加密算法不一定在理

           数据库加密系统是一款基于透明加密技术的数据库防泄漏系统,该产品能够对数据库中的敏感数据加密存储,访问控制增强,应用访问安全,安全审计以及三权分立等功能。

    一个好的数据库加密系统,应该在保证数据安全的基础上,尽可能的提高工作效率,在工作效率和安全性之间取得一个平衡。总体来说满足以下条件:

    • 加解密速度要求足够快,这样能够减少影响数据操作响应时间。
    • 加密强度足够大,保证大部分数据长时间不被破译。但是在实际应用中加密算法不一定在理论上无法破解,但在实际应用中应能保证破解密文的代价大于获取其中数据的意义。
    • 对数据库的合法用户来说加解密操作是透明的,他不会影响用户的合理操作。换句话说,若某用户在明文数据库系统中能够进行更新,增加,删除数据,那么在密文数据库中也可以用相同的方法增加,更新和删除数据,用户不关心数据如何完成加解密。
    • 加密后的数据库,存储量不能有较大程度的增加。
    • 密钥管理方案灵活,高效,密钥安全存储,使用方便可靠。众所周知,加密算法本身并不保密,所以要确保数据的安全性通常取决于密钥的安全性。

    数据库加密的主要方法:

    (1)MD5加密算法

    ​       在现阶段,我们一般认为存在两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将我们可以直接理解的明文数据加密为我们不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理解的明文。双向加密适合于隐秘通讯,比如,我们在网上购物的时候,需要向网站提交信用卡密码,我们当然不希望我们的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,我们希望我们的信用卡密码是通过加密以后,再在网络传送,这样,网站接受到我们的数据以后,通过解密算法就可以得到准确的信用卡账号。

            单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。可能我们立即就会想,这样的加密有什么用处?不能解密的加密算法有什么作用呢?在实际中的一个应用就是数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。

           MD5就是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。

            MD5CyptoServiceProvider类是.NET中System.Security.Cryptography名字空间的一个类,提供专门用于MD5单向数据加密的解决方法,也是本文中我们用来加密数据库中密码的类。在真正进行数据加密之前,我们首先来了解MD5CyptoServiceProvider类中的主要方法:ComputeHash,它将输入的明文数据数组使用MD5加密以后输出加密后的密文数据数组。

    使用加密方式保存到数据库的限制:

    ​        在决定是否使用加密方式保存密码之前,我们还要考虑一些问题,因为MD5是单次加密算法,加密以后的信息不可以解密,所以,如果用户丢失密码,任何人都很难找到用户原来的密码,这时候,网站也就相应的失去一个很重要的功能,那就是用户提供其他信息来取得忘记的密码的功能,这不能不说是网站的一个大缺陷。另外,采用这样的加密方式,必须完全修改以前的用户资料,要求用户完全重新注册,这也是这种方法比较困难的一个地方。

    (2)密码加密:哈希加盐

    一般系统数据库密码加密方式:

    • MD5后存入数据库
    • SHA1 Hash后存入数据库

    缺点:黑客可以通过密码暴力破解获取密码信息,具体做法是将常用密码进行Hash后做成一个字典,破解的时候,只需要查字典就能知道对应的明文密码。

    建议:使用以下两种密码策略相结合的方式去解决

    • 密码 + 盐(一串随机数) 再Hash
    • 限制密码最小长度和密码复杂度

    解释:以上给每个密码加一个随机数后,实际上是将密码人为地拓展了N位,导致密码长度大增,使得攻击者很难很难构造这么大的一个字典去破解。退一步讲,就算攻击者的字典足够强大但是暴力破解所需要花费的时间代价过长从而降低了这种风险。

    // 1.指定加密算法
    MessageDigest digest = MessageDigest.getInstance("MD5");
    // 2.将需要加密的字符串转化成byte类型的数据,然后进行哈希过程
    byte[] bs = digest.digest((psd + salt).getBytes());
    // 3.遍历bs,让其生成32位字符串,固定写法
    
    展开全文
  • 但是, MD5是同步的,阻塞了代码执行,而且速度很慢,对于视频来说是不现实的慢文件。 (在我们低功耗的服务器平台上,我们以每兆字节约1秒的频率对其进行计时。) 快30倍? 在较大的文件上,可以。 以下是基准测试...
  • MD5加密、加盐和去盐

    2019-11-29 19:30:02
    散列加密 MD5是不可逆、不能解密、速度快等特点。 对称加密法:根据相同的钥匙,进行加密和解密 大数据量的加密和解密。 不对称加密法:两把钥匙,A钥匙加密的东西,B钥匙可以解开。B钥匙加密的东西,A钥匙可以解开...
  • 【面试总结】MD5加密算法优劣 ...
  • 对字符串进行MD5加密

    千次阅读 2018-09-28 21:02:39
    MD5消息摘要算法,一种被广泛使用的密码散列函数,可以...MD5是一种不可逆的加密算法。 1.编写加密类。 public class StringUtil { private final static Log log = LogFactory.getLog(StringUtil.class); private...
  • MD5加密和RSA加密

    千次阅读 2017-11-05 14:04:44
    1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用。    MD5的功能:  ①.输入任意长度的信息,经过处理,输出为128位的信息(数字...
  • 一个优化极好的VB MD5加密模块代码,用这个模块进行MD5算法的加密速度非常快,可应用于多种的加密环境中,不失为一个很好的加密类,代码开源,另附有测试代码可供学习用法。
  • 虽然现在很多算法也可以将md5解密出来但是md5还是具有很大程度上的不可逆,而且加大解密难道使用双重加密,很多登录的地方用到md5加密,那么有些人会问我用md5加密了服务器怎么解密呢,你要是这么想就错了。...
  • 速度极快,绝非一般的VB MD5能达到,比C++还快 测试结果:一般的MD5加密比这个模块慢大约100倍
  • 摘要:VC/C++源码,文件操作,MD5,加密 文件多层MD5加密工具...本MD5加密工具速度快,适用于除纯英文类文件外的其他文件,如果加密或解密非纯英文类文件,建议使用此方法,加密或解密纯英文类文件,建议选择全部操作。
  • iOS 加密算法之MD5加密使用

    千次阅读 2016-07-01 16:29:17
    软件开发过程中,对数据进行加密是保证数据安全的重要手段,常见的加密有Base64加密MD5加密。Base64加密是可逆的,MD5加密目前来说一般是不可逆的。我们在开发一款iOS App过程中,对于发送的请求,其中有个“sign...
  • 基于Tornado 码的复制算法具有编解码速度比较快、部分数据丢失时亦能被恢复的...2 )对原始数据使用MD5 算法产生数字指纹,当从分布式存储系统取回数据时,计算数字指纹并与本地的数字指纹对比,就可以判断数据是否被篡改.
  • 各种加密算法的速度对比

    万次阅读 2015-11-09 10:32:00
    MD5 109 SHA-1 55 SHA-256 225 SHA-512 174 SHA-3-224 13 SHA-3-256 12 SHA-3-384 10 SHA-3-512 7 Tiger 402...
  • 常见三种加密MD5、非对称加密,对称加密) 转载。 https://blog.csdn.net/SSY_1992/article/details/79094556 任何应用的开发中安全都是重中之重,在信息交互异常活跃...
  • 用于破解md5密码,需要准备好字典,单线程,破解速度极快
  • MD5加密 对称加密 非对称加密 1,MD5加密 MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个...
  • md5加密

    2016-08-29 09:43:38
    本篇使用java自带的MessageDigest实现对文本的md5加密算法,具体代码如下: [java] view plain copy  print?  /**   *@Description: 将字符串转化为MD5   */  package cn.yicha.novel.util; ...
  • MD5和SHA加密

    万次阅读 2018-04-17 16:37:39
    1.MD5(Message Digest algorithm 5,信息摘要算法)2.SHA(Secure Hash Algorithm,安全散列算法)SHA-1与MD5的比较因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点...
  • Java实现MD5加密的代码实例分享

    万次阅读 2018-04-24 00:14:47
    如果对安全性的需求不是太高,MD5仍是使用非常方便和普及的加密方式,比如Java中自带的MessageDigest类就提供了支持,这里就为大家带来Java实现MD5加密及解密的代码实例分享: 基础:MessageDigest类的使用 其实要在...
  • 计算MD5密文的小软件,支持字符串的MD5加密 和 文件的MD5加密,文件加密速度还是蛮快的。
  • 使用boost库进行MD5加密和SHA1加密

    千次阅读 2020-03-19 18:02:29
    使用boost库进行MD5加密和SHA1加密 MD5 和SHA-1 是目前使用比较广泛的散列(Hash)函数,也是在消息认证和数字签名中普遍使用的两种加密算法,现在信息安全面临两大基本攻击:被动式攻击(获取消息的内容、业务流分析...
  • MD5加密算法与SHA加密算法

    千次阅读 2015-11-09 14:57:05
    2、MD5加密 2.1 概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory ...
  • 针对Blowfish算法在实际应用中存在的等价密钥、重复初始化等问题,提出Blowfish与MD5算法相结合,将MD5算法的生成值作为密钥的一部分对Blowfish算法进行初始化,使用概率统计方法证明该方案弥补了Blowfish算法的实际...
  • MD5计算字符串或文件的特征码(数字指纹), 不可逆, 因为任何文件或字符串算出来的md5都是32位!...怎样进行MD5加密呢: 先拿到MessageDigest 对象的实例; getinstance(“MD5”); (ctrl+Y 反向快捷键) //St

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,747
精华内容 14,298
热门标签
关键字:

md5加密速度