精华内容
下载资源
问答
  • java md5加密 解密

    2017-08-03 22:10:46
    java md5加密 解密
  • md5解密工具

    2019-07-10 09:42:29
    md5解密工具
  • java实现md5 加密解密

    热门讨论 2013-08-20 09:58:44
    java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法明文进行加密,加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
  • MD5加密解密

    2018-06-07 10:29:37
    java 采用MD5 进行加密和解密完整代码,导入就可以直接使用,有完整的注释,轻松上手。
  • 主要介绍了java中常用工具类之字符串操作类和MD5加密解密类,需要的朋友可以参考下
  • Java实现MD5加密解密

    热门讨论 2011-07-29 11:02:34
    Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。
  • 主要介绍了java实现的MD5摘要算法,结合完整实例形式分析了java实现md5单项加密的具体步骤与相关操作技巧,需要的朋友可以参考下
  • MD5解密工具類

    2018-05-05 15:39:34
    MD5解密MD5解密MD5解密 MD5解密 MD5解密
  • AES使用java和js互相加解密及前端MD5加密,java后台加密前端js解密,或前端js加密,后端java解密
  • 主要介绍了Java实现DES加密与解密md5加密以及Java实现MD5加密解密类 ,需要的朋友可以参考下
  • Java MD5加密解密

    万次阅读 热门讨论 2018-06-29 10:09:27
    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and ...
    Message Digest Algorithm MD5(中文名为 消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译 摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、 MD3MD4
    MD5算法具有以下特点:
    1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
    2、容易计算:从原数据计算出MD5值很容易。
    3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
    4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

    MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。


    import java.security.MessageDigest;
    
    /**
     * MD5技术加密解密
     */
    public class MD5Tools {
        /***
         * MD5加码 生成32位md5码
         */
        public static String string2MD5(String inStr){
            MessageDigest md5 = null;
            try{
                md5 = MessageDigest.getInstance("MD5");
            }catch (Exception e){
                System.out.println(e.toString());
                e.printStackTrace();
                return "";
            }
            char[] charArray = inStr.toCharArray();
            byte[] byteArray = new byte[charArray.length];
    
            for (int i = 0; i < charArray.length; i++)
                byteArray[i] = (byte) charArray[i];
            byte[] md5Bytes = md5.digest(byteArray);
            StringBuffer hexValue = new StringBuffer();
            for (int i = 0; i < md5Bytes.length; i++){
                int val = ((int) md5Bytes[i]) & 0xff;
                if (val < 16)
                    hexValue.append("0");
                hexValue.append(Integer.toHexString(val));
            }
            return hexValue.toString();
    
        }
    
        /**
         * 加密解密算法 执行一次加密,两次解密
         */
        public static String convertMD5(String inStr){
    
            char[] a = inStr.toCharArray();
            for (int i = 0; i < a.length; i++){
                a[i] = (char) (a[i] ^ 't');
            }
            String s = new String(a);
            return s;
    
        }
    
        // 测试主函数
        public static void main(String args[]) {
            String s = new String("1233");
            System.out.println("原始:" + s);
            System.out.println("MD5后:" + string2MD5(s));
            System.out.println("加密的:" + convertMD5(s));
            System.out.println("解密的:" + convertMD5(convertMD5(s)));
    
        }
    }

    展开全文
  • import java.security.MessageDigest; public class MD5Utils { public static String string2MD5(String inStr) { MessageDigest md5 = null;... md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) {
    import java.security.MessageDigest;
    public class MD5Utils {
        public static String string2MD5(String inStr) {
            MessageDigest md5 = null;
            try {
                md5 = MessageDigest.getInstance("MD5");
            } catch (Exception e) {
                System.out.println(e.toString());
                e.printStackTrace();
                return "";
            }
            char[] charArray = inStr.toCharArray();
            byte[] byteArray = new byte[charArray.length];
    
            for (int i = 0; i < charArray.length; i++)
                byteArray[i] = (byte) charArray[i];
            byte[] md5Bytes = md5.digest(byteArray);
            StringBuffer hexValue = new StringBuffer();
            for (int i = 0; i < md5Bytes.length; i++) {
                int val = ((int) md5Bytes[i]) & 0xff;
                if (val < 16)
                    hexValue.append("0");
                hexValue.append(Integer.toHexString(val));
            }
            return hexValue.toString();
        }
    
        /**
         * 加密解密算法 执行一次加密,两次解密
         */
        public static String convertMD5(String inStr) {
            char[] a = inStr.toCharArray();
            for (int i = 0; i < a.length; i++) {
                a[i] = (char) (a[i] ^ 't');
            }
            String s = new String(a);
            return s;
        }
        public static void main(String args[]) {
            String s = new String("789ABCabc159");
            System.out.println("原始:" + s);
            System.out.println("MD5后:" + string2MD5(s));
            System.out.println("加密的:" + convertMD5(s));
            System.out.println("解密的:" + convertMD5(convertMD5(s)));
            
        }
    
    
    
    }
    
    
    展开全文
  • 主要介绍了java加密算法,包括rsa解密、对称加密、md5加密等,需要的朋友可以参考下
  • java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用
  • java实现MD5加密算法

    2016-07-25 11:09:54
    实现了不可逆的MD5加密算法
  • Java对大文件MD5解密详解

    千次阅读 2017-05-23 16:12:48
    MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message ... Java已经实现了MD5、SHA1算法。利用java.security.MessageDigest类就可以获取字符
            MD5是常用的加密
    算法
    ,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm)。另外还有一种常用的消息摘要算法SHA1。如果想了解这些的话,可以去百度百科:MD5、SHA1、消息摘要算法。 
    

             Java已经实现了MD5、SHA1算法。利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果。

     

    1.字符串的MD5(下面的代码有详细注释)

    [java]  view plain  copy
    1. public static String stringMD5(String input) {  
    2.   
    3.    try {  
    4.   
    5.       // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)  
    6.   
    7.       MessageDigest messageDigest =MessageDigest.getInstance("MD5");  
    8.   
    9.   
    10.       // 输入的字符串转换成字节数组  
    11.   
    12.       byte[] inputByteArray = input.getBytes();  
    13.   
    14.   
    15.   
    16.       // inputByteArray是输入字符串转换得到的字节数组  
    17.   
    18.       messageDigest.update(inputByteArray);  
    19.   
    20.   
    21.   
    22.       // 转换并返回结果,也是字节数组,包含16个元素  
    23.   
    24.       byte[] resultByteArray = messageDigest.digest();  
    25.   
    26.   
    27.   
    28.       // 字符数组转换成字符串返回  
    29.   
    30.       return byteArrayToHex(resultByteArray);  
    31.   
    32.        
    33.   
    34.    } catch (NoSuchAlgorithmException e) {  
    35.   
    36.       return null;  
    37.   
    38.    }  
    39.   
    40. }  


      

       //下面这个函数用于将字节数组换成成16进制的字符串

    [java]  view plain  copy
    1. public static String byteArrayToHex(byte[] byteArray) {  
    2.   
    3.    // 首先初始化一个字符数组,用来存放每个16进制字符  
    4.   
    5.    char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9''A','B','C','D','E','F' };  
    6.   
    7.   
    8.   
    9.    // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))  
    10.   
    11.    char[] resultCharArray =new char[byteArray.length * 2];  
    12.   
    13.   
    14.   
    15.    // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去  
    16.   
    17.    int index = 0;  
    18.   
    19.    for (byte b : byteArray) {  
    20.   
    21.       resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];  
    22.   
    23.       resultCharArray[index++] = hexDigits[b& 0xf];  
    24.   
    25.    }  
    26.   
    27.   
    28.   
    29.    // 字符数组组合成字符串返回  
    30.   
    31.    return new String(resultCharArray);  


     

     

    从上面代码可以看出,使用MessageDigest对字符串进行MD5算法的步骤是,先将字符串转换成字节数组,在进行MD5算法,最后返回的也是一个字节数组,要我们自己转成32位的字符串。

     

    2.文件MD5

     

    对文件进行MD5也可以像字符串MD5一样的,首先要把文件转成字节数组,后面和字符串MD5完全一样。

    但是如果是一个特别大的文件,一下子把一个文件的数组全部读到内存中,那么估计内存也吃不消。

    对于大文件,可以使用DigestInputStream。

     

    [java]  view plain  copy
    1. public static String fileMD5(String inputFile) throws IOException {  
    2.   
    3.    
    4.   
    5.       // 缓冲区大小(这个可以抽出一个参数)  
    6.   
    7.       int bufferSize = 256 * 1024;  
    8.   
    9.       FileInputStream fileInputStream = null;  
    10.   
    11.       DigestInputStream digestInputStream = null;  
    12.   
    13.    
    14.   
    15.       try {  
    16.   
    17.          // 拿到一个MD5转换器(同样,这里可以换成SHA1)  
    18.   
    19.          MessageDigest messageDigest =MessageDigest.getInstance("MD5");  
    20.   
    21.    
    22.   
    23.          // 使用DigestInputStream  
    24.   
    25.          fileInputStream = new FileInputStream(inputFile);  
    26.   
    27.          digestInputStream = new DigestInputStream(fileInputStream,messageDigest);  
    28.   
    29.    
    30.   
    31.          // read的过程中进行MD5处理,直到读完文件  
    32.   
    33.          byte[] buffer =new byte[bufferSize];  
    34.   
    35.          while (digestInputStream.read(buffer) > 0);  
    36.   
    37.    
    38.   
    39.          // 获取最终的MessageDigest  
    40.   
    41.          messageDigest= digestInputStream.getMessageDigest();  
    42.   
    43.    
    44.   
    45.          // 拿到结果,也是字节数组,包含16个元素  
    46.   
    47.          byte[] resultByteArray = messageDigest.digest();  
    48.   
    49.    
    50.   
    51.          // 同样,把字节数组转换成字符串  
    52.   
    53.          return byteArrayToHex(resultByteArray);  
    54.   
    55.    
    56.   
    57.       } catch (NoSuchAlgorithmException e) {  
    58.   
    59.          return null;  
    60.   
    61.       } finally {  
    62.   
    63.          try {  
    64.   
    65.             digestInputStream.close();  
    66.   
    67.          } catch (Exception e) {  
    68.   
    69.          }  
    70.   
    71.          try {  
    72.   
    73.             fileInputStream.close();  
    74.   
    75.          } catch (Exception e) {  
    76.   
    77.          }  
    78.   
    79.       }  
    80.   
    81.    }  


     

       上面的方法本人亲测过大小约4G的文件,得出的MD5值和网上下载的一个MD5小工具得到的MD5值一样,说明上面的方式没有什么问题。不过取大文件的MD5很慢,4G的文件跑一下要一分钟(I5处理器 6G内存 64位XP系统 本本)。

     

    附1:我在网上还看到一种给文件MD5的方式

    [java]  view plain  copy
    1. public static String getFileMD5String(File file) throws IOException{  
    2.  FileInputStream in = new FileInputStream(file);  
    3.  FileChannel ch =in.getChannel();  
    4.  MappedByteBuffer byteBuffer =ch.map(FileChannel.MapMode.READ_ONLY, 0,file.length());  
    5.  messagedigest.update(byteBuffer);  
    6.  return byteArrayToHex (messagedigest.digest());  
    7. }  

    我也尝试过这样的方式,但是如果文件大于2G,那么这种方式会出现异常。所以不推荐。


    附2:测试文件MD5的main方法

    [java]  view plain  copy
    1. public static void main(String[] args) {  
    2.   
    3.   long startTime = System.currentTimeMillis();  
    4.   
    5.   try {  
    6.     System.out.println(fileMD5("E:/软件/VS2008ProEdition90DayTrialCHSX1435983.iso"));  
    7.   } catch (IOException e) {  
    8.     e.printStackTrace();  
    9.   }  
    10.   
    11.   long endTime = System.currentTimeMillis();  
    12.   
    13.   System.out.println((endTime - startTime)/1000);  
    14. }  

    展开全文
  • 如果安全性的需求不是太高,MD5仍是使用非常方便和普及的加密方式,比如Java中自带的MessageDigest类就提供了支持,这里就为大家带来Java实现MD5加密及解密的代码实例分享:
  • JAVAMD5加密解密MD5工具类)

    千次阅读 2019-12-05 17:45:26
    ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码) ...工具类如下: import org.apache.commons.codec.digest.DigestUtils; import java.math.BigInteger;...import java.se...

    ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)

    http://ascii.911cha.com/

    工具类如下:

    import org.apache.commons.codec.digest.DigestUtils;
    import java.math.BigInteger;
    import java.security.MessageDigest;
    
    /**
     * Description: md5加密解密
     */
    public class MD5 {
    
        public static String md5(String dateString) throws Exception {
            MessageDigest md5 = null;
            byte[] digest = MessageDigest.getInstance("md5").digest(dateString.getBytes("utf-8"));
            String md5code = new BigInteger(1, digest).toString(16);
            // 如果生成数字未满32位,需要前面补0
            for (int i = 0; i < 32 - md5code.length(); i++) {
                md5code = "0" + md5code;
            }
            return md5code;
        }
    
    	//ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。
    	//(1)0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),
    	// 如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字			   符:SOH(文头)、EOT(文尾)、ACK(确认)等;
    	// ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的	应用程序,而对文本显示有不同的影响。
    	// 2)32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
    	//(3)65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等
    	。
        public static String md5PlusSalt(String keyword)
        {
    		//md5加密
            String md5 = DigestUtils.md5Hex(keyword);
    		//md5+盐
            char[] cArray = md5.toCharArray();
            for(int i = 0;i < cArray.length; i++)
            {
                if(cArray[i] >= 48 &&cArray[i] <= 57)
                {
                    cArray[i] = (char)(105-cArray[i]);
    
                }
            }
    		//都可以使用
            return  String.valueOf(cArray);
    		//return  "".valueOf(cArray);
    
        }
    	//
    	解密+盐
        public static String md5MinusSalt(String md5)
        {
            char[] cArray=md5.toCharArray();
            for(int i=0;i<cArray.length;i++)
            {
                if(cArray[i]>=48&&cArray[i]<=57)
                {
                    cArray[i]=(char)(105-cArray[i]);
                }
            }
            return  String.valueOf(cArray);
    		//return  "".valueOf(cArray);
        }
    }
    

    测试类

    import com.example.demo.system.util.MD5;
    import org.apache.commons.codec.digest.DigestUtils;
    
    /**
     * Description:MD5测试类
     */
    public class Md5Test{
    
        public static void main(String[] args) {
    
            String keyword="i love you";
            String md5= DigestUtils.md5Hex(keyword);
            System.out.println("md5加密后:"+"\n"+md5);
            String md5salt= MD5.md5PlusSalt(keyword);
            System.out.println("加盐后:"+"\n"+md5salt);
            String word= MD5.md5MinusSalt(md5salt);
            System.out.println("解密后:"+"\n"+word);
        }
    }
    
    展开全文
  • java实现MD5加密解密

    2019-10-18 16:33:34
    注意:这里无论是第一种还是第二种,运行一次为加密,运行两次是进行解密!!!! 第一种: import java.io.UnsupportedEncodingException; import java.security.MessageDigest; `在这里插入代码片` import java.....
  • Java中实现Md5(32位)加密,此资源下载后可直接在程序中使用
  • MD5Util.java

    2020-03-17 10:10:06
    这是加密与解密算法,需要的可自行下载!一次加密两次解密加密。这是加密与解密算法,需要的可自行下载!一次加密两次解密加密。
  • JavaMD5字符串的加密解密

    千次阅读 2019-05-24 20:41:35
    至于为什么要给字符串加密解密,各种加密解密的方式优缺点对比等等,本文都不会讲,弄点实用的代码,给需要应急的朋友应急 废话不多说,看代码了: import java.security.Key; import java.security....
  • java(md5) 加密解密简单实现

    千次阅读 2017-07-21 13:08:42
    Java代码  package test;  import java.io.FileInputStream; class="java" name="code">  import java.io.FileOutputStream;  import java.io.IOException;  import java.io....
  • 我的md5已经可以成功加密,但是网上的人说md5是不可逆的算法,不能解密么,上次我已经解密了,不过我没有记下来,大神们有什么办法呢

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,961
精华内容 9,184
关键字:

java对md5解密

java 订阅