md5加密算法是可逆的_md5为什么不可逆

md5加密算法是可逆的_md5为什么不可逆md5加密以上代码输出结果:注:md5算法是不可逆的,所以经过md5加密过的字符串是无法还原(解密)的。一般用作登陆验证的时候,也是要先经过md5加密然后去数据库验证密码是否正确。据说md5是被

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

md5加密

package gov.mof.fasp2.gcfr.adjustoffset.adjust;
import java.security.MessageDigest;
public class MD5Test {

    /**
     * 测试主函数
     * @param args
     */
    public static void main(String[] args) {
          String s = "admin";
          System.out.println("原始:" + s);     
          System.out.println("MD5后:" + MD5(s));     
          System.out.println("(可逆)加密的:" + JM(s)); 
          System.out.println("(可逆)解密的:" + JM(JM(s)));//两次解密
    }
    /**
     * 生成32位码
     * @param s - 需要加密的字符串
     * @return
     */
    public final static String MD5(String s) {
        try {
            byte[] btInput = s.getBytes();
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            mdInst.update(btInput);
            byte[] md = mdInst.digest();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < md.length; i++) {
                int val = ((int) md[i]) & 0xff;
                if (val < 16)
                    sb.append("0");
                sb.append(Integer.toHexString(val));
            }
            return sb.toString();
        } catch (Exception e) {
            return null;
        }
    }
    
    /**
     * 加密解密算法 执行一次加密,两次解密 (可逆加解密算法)
     * @param s - 需要加密的字符串
     * @return
     */
     public static String JM(String inStr) {     
      char[] a = inStr.toCharArray();     
      for (int i = 0; i < a.length; i++) {     
       a[i] = (char) (a[i] ^ 't');     
      }     
      String k = new String(a);     
      return k;     
     }     

}

以上代码输出结果:

md5加密算法是可逆的_md5为什么不可逆

注:md5算法是不可逆的,所以经过md5加密过的字符串是无法还原(解密)的。一般用作登陆验证的时候,也是要先经过md5加密然后去数据库验证密码是否正确。

据说md5是被山东的一个女博士激活成功教程过,纯属传说。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168181.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 缓存解决方案SpringDataRedis

    缓存解决方案SpringDataRedis

    2021年7月11日
    74
  • tess4J 安装使用

    tess4J 安装使用直接引用maven测试报错主要原因是引入不了dlljava.lang.UnsatisfiedLinkError:找不到指定的模块。 atcom.sun.jna.Native.open(NativeMethod) atcom.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:288) atcom.sun.jna.Na…

    2022年4月28日
    58
  • 数组的下标越界与内存溢出有关吗_数据量过大数组报下标越界

    数组的下标越界与内存溢出有关吗_数据量过大数组报下标越界很相似的两个概念,一不小心就会混淆首先,对两个名词做一个大概的解释:下标越界在引用数组元素时,使用的下标超过了该数组下标的应有范围,但应注意的是:C/C++不对数组做边界检查。可以重写数组的每一端,并写入一些其他变量的数组或者甚至是写入程序的代码。不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这

    2022年10月19日
    4
  • 计算机网络协议——通信协议综述

    计算机网络协议——通信协议综述通信协议综述概述一、为什么学习网络协议1.1常见的网络协议二、网络分层的真正含义2.1为什么网络要分层?2.2浏览点击请求过程2.3揭秘层与层之间的关系三、ifconfig命令行的由来3.1ip地址3.2无类型域间选路(CIDR)3.3公有IP地址和私有IP地址3.4MAC地址四、DHCP和PXE:ip的由来4.1动态主机配置协议(DHCP)4.2解析DHCP的工作方式4.3…

    2022年10月3日
    6
  • 预写式日志(Write-Ahead Logging (WAL))

    预写式日志(Write-Ahead Logging (WAL))

    2021年11月25日
    43
  • 网页制作实验步骤_web简易开发

    网页制作实验步骤_web简易开发web实验2制作简单网页(HTML+CSS)一、实验目的1.掌握文本样式的设置。2.掌握图像样式的设置。3.掌握各种媒体的插入方法。二、实验内容采用DIV+CSS,制作“在线电影”页面。三、操作提示1.新建网站的文件夹,网站图像素材保存在images文件夹中,媒体文件放在flash文件中。2.新建index.html页面,要求: 页面字体大小为14px,文本颜色为#000; 页面背景颜色为#edb8d2; 上下左右距均为0。3.利用div布局,宽度为900px,居中对齐。

    2022年10月13日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号