md5加密 订阅
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。 展开全文
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
信息
别    称
摘要算法
提出者
罗纳德·李维斯特
应用学科
信息技术,计算机科学
中文名
消息摘要算法
外文名
Message Digest Algorithm MD5
提出时间
1992年
MD5发展历史
1992年8月,罗纳德·李维斯特向互联网工程任务组(IETF)提交了一份重要文件,描述了这种算法的原理。由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等 [1]  。MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的加密保护领域 [2]  。Rivest在1989年开发出MD2算法 [3]  。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的校验和追加到信息末尾,并且根据这个新产生的信息计算出散列值。后来,Rogier和Chauvaud发现如果忽略了校验和MD2将产生冲突。MD2算法加密后结果是唯一的(即不同信息加密后的结果不同) [4]  。为了加强算法的安全性,Rivest在1990年又开发出MD4算法 [3]  。MD4算法同样需要填补信息以确保信息的比特位长度减去448后能被512整除(信息比特位长度mod 512 = 448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damgard/merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。Den boer和Bosselaers以及其他人很快的发现了攻击MD4版本中第一步和第三步的漏洞。Dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到MD4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果) [5]  。1991年,Rivest开发出技术上更为趋近成熟的MD5算法。它在MD4的基础上增加了"安全带"(safety-belts)的概念。虽然MD5比MD4复杂度大一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法中,信息-摘要的大小和填充的必要条件与MD4完全相同。Den boer和Bosselaers曾发现MD5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了 [3]  。
收起全文
精华内容
下载资源
问答
  • md5加密

    千次阅读 2017-05-17 13:00:53
    md5加密


    md5加密


    今天学习了md5加密,这里简单分享一下!

    第一步:创建一个maven工程,这里我用的是eclipse



    第二步:导包,由于是maven工程,那么我们直接引用maven坐标


    pom.xml配置文件如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.hd</groupId>
      <artifactId>shiro</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
      
      <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-all -->
    <dependency>
       <groupId>org.apache.shiro</groupId>
       <artifactId>shiro-all</artifactId>
       <version>1.3.0</version>
    </dependency>
      </dependencies>
      
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
              <source>1.7</source>
              <target>1.7</target>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
              <version>3.0</version>
              <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
          </plugin>
          <plugin>  
                <groupId>org.apache.tomcat.maven</groupId>  
                <artifactId>tomcat7-maven-plugin</artifactId>  
                <configuration>  
                    <port>8089</port>  
                    <path>/</path>
                    <uriEncoding>UTF-8</uriEncoding> <!-- 此行解决get方式提交乱码问题 -->
                </configuration>  
            </plugin>
        </plugins> 
      </build>
    </project>


    第三步:创建一个普通java类,继承抽象类如下,并且复写验证与授权这两个方法:



    第四步:这里只做验证的加密

    定义任意字符串,然后实例化md5Hash()对象,我们可以看到有好几个构造函数可以选,这里我们先用最简单的


    完整的验证代码是这样的:




    第五步:创建一个file文件,应该需要注意命名规则吧




    ini配置信息如下:



    注意关系:



    具体代码一并附上:

    #定义凭证匹配器



    credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher
    #散列算法
    credentialsMatcher.hashAlgorithmName=md5
    #散列次数
    credentialsMatcher.hashIterations=1


    b=com.hd.customerrealm.CustomerRealm
    b.credentialsMatcher=$credentialsMatcher
    securityManager.realms=$b


    测试:




    代码一并附上:


    public static void main(String[] args) {
    //解析ini文件
    Factory<SecurityManager> factory = 
    new IniSecurityManagerFactory("classpath:shiro-realm.ini");
    //获取SecurityManager
    SecurityManager securityManager = factory.getInstance();
    //将SecurityManager配置到运行环境中
    SecurityUtils.setSecurityManager(securityManager);
    //获取subject实例对象
    Subject subject = SecurityUtils.getSubject();
    //获取token口令
    UsernamePasswordToken token = new UsernamePasswordToken("zhang", "hhh");
    //模拟登录
    subject.login(token);
    //验证
    boolean flag = subject.isAuthenticated();
    System.out.println(flag);
    }


    那么,主方法运行:很抱歉异常了,它告诉我们找不到jar包...




    加上maven坐标,保存一下...




    代码附上:


    <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <version>1.2</version>
    </dependency>


    再跑一下:



    上面那一长串就是加密后的代码。

    另外我们都知道md5是单向解密,无法逆转的。

    以上.......完结....


    展开全文
  • MD5加密

    千次阅读 2016-09-22 19:13:07
    MD5加密

    现在很多地方运用了MD5加密,这个其实很简单。


    第一步导入系统的MD5加密的类,这是系统自己有的。直接输头文件就可以了。

    #import <CommonCrypto/CommonDigest.h>

    写个方法来执行

    +(NSString *)MD5HexDigest:(NSString *)str
    {
        const char *original_str = [str UTF8String];
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        unsigned leng = (unsigned)[str length];
        CC_MD5(original_str,leng, result);
        NSMutableString *hash = [NSMutableString string];
        for (int i = 0; i < 16; i++){
           [hash appendFormat:@"%02X", result[i]];
          };
        return hash;
    
    }
    展开全文
  • /// MD5加密,和动网上的16/32位MD5加密结果相同, /// 使用的UTF8编码 /// </summary> /// <param name="source">待加密字串</param> /// <param name="length">16或32值之一,其它则...
  • java将字符串进行MD5加密

    万次阅读 热门讨论 2017-12-09 15:06:14
    对于一个明文,为了安全,有时我们需要对其进行MD5加密,下面提供2个java工具方法,直接调用其中一个即可。 方法1: /** * MD5加密 */ public class MD5Util { /** * Encodes a string 2 MD5 * * @param ...

    对于一个明文,为了安全,有时我们需要对其进行MD5加密,下面提供1个java工具方法,直接调用即可。

    /**
     * MD5加密
     */
    public class MD5Util {
    
    	/**
    	 * Encodes a string 2 MD5
    	 * 
    	 * @param str String to encode
    	 * @return Encoded String
    	 * @throws NoSuchAlgorithmException
    	 */
    	public static String crypt(String str) {
    		if (str == null || str.length() == 0) {
    			throw new IllegalArgumentException("String to encript cannot be null or zero length");
    		}
    		StringBuffer hexString = new StringBuffer();
    		try {
    			MessageDigest md = MessageDigest.getInstance("MD5");
    			md.update(str.getBytes());
    			byte[] hash = md.digest();
    			for (int i = 0; i < hash.length; i++) {
    				if ((0xff & hash[i]) < 0x10) {
    					hexString.append("0" + Integer.toHexString((0xFF & hash[i])));
    				} else {
    					hexString.append(Integer.toHexString(0xFF & hash[i]));
    				}
    			}
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		}
    		return hexString.toString();
    	}
    
    }
    

     

    欢迎关注微信公众号(Java修炼记):

    专注Java技术积累,免费分享Java技术干货、学习笔记、学习资料等,致力于让这里成为一个java知识小站。

     

    展开全文
  • 在Android开发过程中加密密码常常采用md5加密方式,然而如果服务器端采用php开发(php采用md5加密很简单,直接md5($str)),很可能与java的md5加密不一致。以下方法是md5加密与php一致的源码: import java.math....

    Android开发过程中加密密码常常采用md5加密方式,然而如果服务器端采用php开发(php采用md5加密很简单,直接md5($str)),很可能与java的md5加密不一致。以下方法是md5加密与php一致的源码:

       import java.math.BigInteger;
        import java.security.MessageDigest;
        import java.security.NoSuchAlgorithmException;
        public class MD5 {
        //密码加密 与php加密一致
        public static String md5(String input) throws NoSuchAlgorithmException {
        String result = input;
        if(input != null) {
        MessageDigest md = MessageDigest.getInstance("MD5"); //or "SHA-1"
        md.update(input.getBytes());
        BigInteger hash = new BigInteger(1, md.digest());
        result = hash.toString(16);
        while(result.length() < 32) { //31位string
        result = "0" + result;
        }
        }
        return result;
        }
        }


    展开全文
  • MD5加密(32位MD5加密,16位MD5加密后base64后URL编码,16位MD5base64编码) import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.commons.codec.binary.Base64;...
  • js-MD5加密,JavaScript-MD5加密

    千次阅读 2017-03-08 14:29:42
    js-MD5加密,JavaScript-MD5加密
  • MD5加密(base64及MD5加密

    千次阅读 2018-04-25 18:10:57
    1、MD5加密+Base64加密两种方式: 方式一: #region MD5+Base64加密 方式一 public static string GetMd5HashBytes(string input, Encoding encodeType) { System.Security.Cryptography.MD5 mD = Sys...
  • java与MD5加密以及两次MD5加密

    千次阅读 2019-06-01 15:12:55
    java中实现MD5加密通常有两种方法 方法一:通过java自带的java.security.MessageDigest实现加密 package com.wantao.md5; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ...
  • 密码的MD5加密 ...用MD5加密算法后,前台用户输入的字符串如何使用MD5加密,需要做的是将当前的Realm 的credentialsMatcher属性,替换为Md5CredentialsMatcher 由于Md5CredentialsMatcher已经过期了,推荐使用...
  • js md5加密和java md5加密不一致

    千次阅读 2017-08-18 11:10:39
    页面请求后台数据时会有一个验签过程,前台js将数据md5加密后传到后台,后台根据接收的请求数据根据约定的规则同样生成md5,数字和英文没有问题,但是要加密的字符串中包含中文则两者结果对比不一致后来替换md5 js...
  • js md5加密 无法md5解密

    万次阅读 2018-08-21 11:41:48
    微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 在util目录添加md5.js文件 : 下载地址:... ... * MD5加密 */ var MD5Encode = require(...
  • Java实现MD5加密的方式

    万次阅读 多人点赞 2018-07-02 00:08:15
     MD5加密全程是Message-Digest Algoorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。  例如我们要加密一篇文章,那么我们会随机从每段话或者每行中获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,161
精华内容 14,064
关键字:

md5加密