精华内容
下载资源
问答
  • md5加密算法详解md5加密算法详解md5加密算法详解md5加密算法详解md5加密算法详解md5加密算法详解md5加密算法详解md5加密算法详解
  • md5加密算法md5加密算法md5加密算法md5加密算法md5加密算法md5加密算法md5加密算法
  • MD5加密算法

    2008-04-26 16:20:28
    MD5加密算法MD5加密算法
  • Md5加密算法

    2016-10-13 19:03:14
    在开发中遇到的 实现Md5加密算法 传入你想加密的数据调用该工具进行md5加密 代码如下: package pro_util; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security....

    在开发中遇到的  实现Md5加密算法   传入你想加密的数据调用该工具进行md5加密

    代码如下:

    package pro_util;
    
    import java.io.UnsupportedEncodingException;
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * Created by 小林哥 on 2016/10/13.
     * md5加密工具
     */
    public class Md5 {
        /**
         * Used building output as Hex
         */
        private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
                'F' };
    
        /**
         * 对字符串进行MD5加密
         *
         * @param text
         *
         *
         * @return 密文
         */
        public static String md5(String text, String charset) {
            MessageDigest msgDigest = null;
    
            try {
                msgDigest = MessageDigest.getInstance("MD5");
            } catch (NoSuchAlgorithmException e) {
                throw new IllegalStateException("System doesn't support MD5 algorithm.");
            }
    
            try {
                msgDigest.update(text.getBytes(charset));
    
            } catch (UnsupportedEncodingException e) {
    
                throw new IllegalStateException("System doesn't support your  EncodingException.");
    
            }
    
            byte[] bytes = msgDigest.digest();
    
    //    String md5Str = new String(encodeHex(bytes));
    
            BigInteger bi = new BigInteger(1,bytes);
            return bi.toString(16);
        }
    
        public static char[] encodeHex(byte[] data) {
    
            int l = data.length;
    
            char[] out = new char[l << 1];
    
            // two characters form the hex value.
            for (int i = 0, j = 0; i < l; i++) {
                out[j++] = DIGITS[(0xF0 & data[i]) >>> 4];
                out[j++] = DIGITS[0x0F & data[i]];
            }
    
            return out;
        }
    
        public static void main(String[] args) {
            // System.out.println(md5(md5("123456","utf-8"),"utf-8"));
        }
    }
    

    展开全文
  • MD5 加密算法

    2021-03-01 14:05:06
    文章目录目录消息摘要算法MD5 消息摘要算法 摘要算法,又称为哈希算法,表示:输入任意长度的数据,会输出固定长度的数据,主要用于验证数据的完整性。 消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的...

    目录

    消息摘要算法

    摘要算法,又称为哈希算法,表示:输入任意长度的数据,会输出固定长度的数据,主要用于验证数据的完整性。

    消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,所以不存在密钥的管理与分发问题,适合于分布式网络上使用。但由于其加密计算的工作量相当巨大(加密数据量大的数据时间会非常长),所以以前的这种算法通常只用于数据量有限的情况下的加密。

    消息摘要算法分为 3 类:

    1. MD(Message Digest):消息摘要。
    2. SHA(Secure Hash Algorithm):安全散列。
    3. MAC(Message Authentication Code):消息认证码。

    MD5

    MD5(Message-Digest Algorithm 5,信息-摘要算法),无论加密多大的数据,经过运算后都会生成固定长度的数据,运算结果是使用 16 进制显示的 128bit 的二进制字符串,通常表示为 32 个十六进制数连成的字符串。

    MD5 主要应用于确保信息传输完整一致,例如:应用在文档校验上,用来生成密钥检测文档是否被篡改。

    MD5 的用途:

    1. 防止数据被篡改:比如发送一个电子文档,发送前,我先得到 MD5 的输出结果 A。然后在对方收到电子文档后,对方也得到一个 MD5 的输出结果 A。如果 A 与 B 一致就代表中途未被篡改。

    2. 防止直接看到明文:现在很多网站在数据库中存储用户密码的时候都是存储用户密码的 MD5 值。这样就算攻击者得到了数据库的用户密码的 MD5 值,也无法知道用户的密码。

    3. 防止抵赖(数字签名):这需要一个第三方认证机构。例如 A 写了一个文件,认证机构对此文件用 MD5 算法产生摘要信息并做好记录。若以后 A 说这文件不是他写的,权威机构只需对此文件重新产生摘要信息,然后跟记录在册的摘要信息进行比对,相同的话,就证明是 A 写的了。这就是所谓的 “数字签名”。

    展开全文
  • C++实现 MD5加密算法 可直接调用 hash1加密算法 MD5加密算法 MD5加密算法
  • MD5加密算法

    2008-01-22 10:49:00
    MD5加密算法 介绍MD5加密算法基本情况MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。Message-Digest泛指字节串(Message)的...

    MD5加密算法    
    介绍MD5加密算法基本情况MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
    Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了"字节串"而不是"字符串"这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。

    MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

    MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。

    MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。

    一些黑客破获这种密码的方法是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。

    即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)....+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

    在很多电子商务和社区应用中,管理用户的Account是一种最常用的基本功能,尽管很多Application Server提供了这些基本组件,但很多应用开发者为了管理的更大的灵活性还是喜欢采用关系数据库来管理用户,懒惰的做法是用户的密码往往使用明文或简单的变换后直接保存在数据库中,因此这些用户的密码对软件开发者或系统管理员来说可以说毫无保密可言,本文的目的是介绍MD5的Java Bean的实现,同时给出用MD5来处理用户的Account密码的例子,这种方法使得管理员和程序设计者都无法看到用户的密码,尽管他们可以初始化它们。但重要的一点是对于用户密码设置习惯的保护

    MD加密算法的JAVA描述为:

    import java.security.*;
    import java.security.spec.*; 

     

    class Md5{
    public final static String MD5(String s){
    char hexDigits[] = {
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    try {
    byte[] strTemp = s.getBytes();
    MessageDigest mdTemp = MessageDigest.getInstance("MD5");
    mdTemp.update(strTemp);
    byte[] md = mdTemp.digest();
    int j = md.length;
    char str[] = new char[j * 2];
    int k = 0;
    for (int i = 0; i < j; i++) {
    byte byte0 = md[i];
    str[k++] = hexDigits[byte0 >>> 4 & 0xf];
    str[k++] = hexDigits[byte0 & 0xf];
    }
    return new String(str);
    }
    catch (Exception e){
    return null;
    }
    }
    public static void main(String[] args){
    System.out.print(MD5.Md5("XX"));
    }
     

    展开全文
  • md5加密算法

    2018-11-07 11:55:39
    package com.parwa.web.util; import java.security.MessageDigest; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.SortedMap;... * MD5...
    package com.parwa.web.util;
    
    import java.security.MessageDigest;
    import java.util.Iterator;
    import java.util.Locale;
    import java.util.Map;
    import java.util.Set;
    import java.util.SortedMap;
    /**
     * MD5加密工具类
     * @author win
     *
     */
    public class MD5Utils {
    	
    	@SuppressWarnings("rawtypes")
    	public static String createSign(SortedMap<Object, Object> parameters, String key) {
    		StringBuffer sb = new StringBuffer();
    		Set es = parameters.entrySet();// 所有参与传参的参数按照accsii排序(升序)
    		Iterator it = es.iterator();
    		while (it.hasNext()) {
    			Map.Entry entry = (Map.Entry) it.next();
    			String k = (String) entry.getKey();
    			Object v = entry.getValue();
    			if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
    				sb.append(k + "=" + v + "&");
    			}
    		}
    		sb.append("key=" + key);
    		String sign = MD5Encode(sb.toString(), "UTF-8").toUpperCase();
    		return sign;
    	}
    
    	/**
    	 * MD5加密密文返回
    	 * */
    	public static String getMd5Value(String sSecret) {
    		String result = null;
    		try {
    			MessageDigest bmd5 = MessageDigest.getInstance("MD5");
    			bmd5.update(sSecret.getBytes());
    			StringBuffer buf = new StringBuffer();
    			try {
    				result = byte2hex(bmd5.digest(buf.toString().getBytes("UTF-8")));
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			return result;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    	/**
    	 * 二进制转字符串
    	 */
    	private static String byte2hex(byte[] b) {
    		StringBuffer hs = new StringBuffer();
    		String stmp = "";
    		for (int n = 0; n < b.length; n++) {
    			stmp = (Integer.toHexString(b[n] & 0XFF));
    			if (stmp.length() == 1)
    				hs.append("0").append(stmp);
    			else
    				hs.append(stmp);
    		}
    		return hs.toString().toUpperCase(Locale.ENGLISH);
    	}
    	
    	/**
    	 * 密钥验证
    	 */
    	
    	public static String  SmsPwdMd5(String plainText ) { 
    		try { 
    				MessageDigest md = MessageDigest.getInstance("MD5"); 
    				md.update(plainText.getBytes()); 
    				byte b[] = md.digest(); 
    		
    				int i; 
    		
    				StringBuffer buf = new StringBuffer(""); 
    				for (int offset = 0; offset < b.length; offset++) { 
    					i = b[offset]; 
    					if(i<0) i+= 256; 
    					if(i<16) 
    					buf.append("0"); 
    					buf.append(Integer.toHexString(i)); 
    				} 
    				return buf.toString();
    		}
    		catch (Exception e) { 
    			// TODO Auto-generated catch block 
    			e.printStackTrace(); 
    			return "";
    		} 
    	}
    	
    	private static String byteArrayToHexString(byte b[]) {
    		StringBuffer resultSb = new StringBuffer();
    		for (int i = 0; i < b.length; i++)
    			resultSb.append(byteToHexString(b[i]));
    
    		return resultSb.toString();
    	}
    
    	private static String byteToHexString(byte b) {
    		int n = b;
    		if (n < 0)
    			n += 256;
    		int d1 = n / 16;
    		int d2 = n % 16;
    		return hexDigits[d1] + hexDigits[d2];
    	}
    
    	public static String MD5Encode(String origin, String charsetname) {
    		String resultString = null;
    		try {
    			resultString = new String(origin);
    			MessageDigest md = MessageDigest.getInstance("MD5");
    			if (charsetname == null || "".equals(charsetname))
    				resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
    			else
    				resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
    		} catch (Exception exception) {
    		}
    		return resultString;
    	}
    
    	private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d",
    			"e", "f" };
    
    	public static void main(String[] args) {
    		System.out.println(getMd5Value("test"));
    	}
    
    }
    

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,074
精华内容 4,429
关键字:

md5加密算法