MD5加密原理是散列算法,散列算法也称哈希算法。
计算机专业学的数据结构就有哈希表这一知识点。
比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了。
所以md5不能解密。
就算是设计这个加密算法的人都不知道。
但是你的密码是怎么验证的呢?就是因为同一密码加密后一定相同。
你输入密码加密后才能知道你的密码是否正确。
也就是说,你的密码只有你自己知道。
也是为什么扣扣密码只能重置,不能找回的原因。
加密代码:
————————————————
版权声明:本文为CSDN博主「原飞木」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BushQiang/article/details/79751029
import java.security.MessageDigest; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入要加密的字符串:"); while (in.hasNext()) { String s = in.next(); System.out.println("加密后的字符串为:\n" + MD5(s)); System.out.println("请输入要加密的字符串:"); } } private static String MD5(String s) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bytes = md.digest(s.getBytes("utf-8")); return toHex(bytes); } catch (Exception e) { throw new RuntimeException(e); } } private static String toHex(byte[] bytes) { final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray(); StringBuilder ret = new StringBuilder(bytes.length * 2); for (int i = 0; i < bytes.length; i++) { ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]); ret.append(HEX_DIGITS[bytes[i] & 0x0f]); } return ret.toString(); } }