java實現(xiàn)MD5加密和解密全過程
java實現(xiàn)MD5加密和解密
java沒有實現(xiàn)MD5解密操作,但是有些網(wǎng)站可以完成解密。
也可以使用其他方法進行可逆的加密解密操作。
加密解密
package com.yy.utils;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/**
* 使用md5的算法進行加密
*/
public static String md5(String plainText) {
byte[] secretBytes = null;
try {
secretBytes = MessageDigest.getInstance("md5").digest(
plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("沒有md5這個算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);// 16進制數(shù)字
// 如果生成數(shù)字未滿32位,需要前面補0
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code;
}
return md5code;
}
/**
* 可逆的的加密解密方法;兩次是解密,一次是加密
* @param inStr
* @return
*/
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 = md5("1234");
System.out.println("MD5后:"+s);
System.out.println("MD5后再加密:"+convertMD5(s));
System.out.println("MD5加密后解密:"+convertMD5(convertMD5(s)));
String s2 = convertMD5("12345");
System.out.println("可逆的加密解密方法之加密:"+s2);
System.out.println("可逆的加密解密方法之解密:"+convertMD5(s2));
}
}
運行結果

總結
要想實現(xiàn)MD5的加密是可以實現(xiàn)的,解密的話截止博客發(fā)布時間之前,我目前只找到有md5解密的網(wǎng)站進行解密,沒有發(fā)現(xiàn)怎么實現(xiàn)解密。
因此,我又找到了另一個可以實現(xiàn)解密和解密操作的方法,可以實現(xiàn)一次是加密,二次調用就是解密的操作
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
spring boot 集成 shiro 自定義密碼驗證 自定義freemarker標簽根據(jù)權限渲染不同頁面(推薦
這篇文章主要介紹了spring-boot 集成 shiro 自定義密碼驗證 自定義freemarker標簽根據(jù)權限渲染不同頁面,需要的朋友可以參考下2018-12-12
SpringBoot使用阿里OSS實現(xiàn)文件云存儲的方法
這篇文章主要介紹了SpringBoot使用阿里OSS實現(xiàn)文件云存儲,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
SpringBoot整合日志功能(slf4j+logback)詳解(最新推薦)
Spring使用commons-logging作為內部日志,但底層日志實現(xiàn)是開放的,可對接其他日志框架,這篇文章主要介紹了SpringBoot整合日志功能(slf4j+logback)詳解,需要的朋友可以參考下2024-08-08
FuncGPT慧函數(shù)保護數(shù)據(jù)安全提高代碼質量減少軟件故障(java示例)
這篇文章主要為大家介紹了FuncGPT慧函數(shù)保護數(shù)據(jù)安全提高代碼質量減少軟件故障(java示例),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
Java8之lambda最佳實踐_動力節(jié)點Java學院整理
在8 里面Lambda是最火的主題,不僅僅是因為語法的改變,更重要的是帶來了函數(shù)式編程的思想,我覺得優(yōu)秀的程序員,有必要學習一下函數(shù)式編程的思想以開闊思路2017-06-06
springboot實現(xiàn)rabbitmq消息確認的示例代碼
RabbitMQ的消息確認有兩種, 一種是消息發(fā)送確認,第二種是消費接收確認,本文主要介紹了springboot實現(xiàn)rabbitmq消息確認的示例代碼,具有一定的參考價值,感興趣的可以了解一下2023-09-09

