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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何使用maven搭建web项目「建议收藏」

    博客园注册了有二十多天了,还没有写过博客,今天就发一篇,也便于后面查找笔记。我个人已经做了几年的javaweb开发了,由于所在的公司是业务型公司,用的都是一些老旧的稳定技术,很少接触到稍微新点的内

    2022年2月16日
    43
  • 时间控件(选择时间范围的插件)「建议收藏」

    时间控件(选择时间范围的插件)「建议收藏」后台开发,一般都是有筛选条件的查询,那么问题就来了,根据日期范围搜索的情况下,插件要怎么选????Laydate时间控件这个是最开始,我采用的是两个时间插件,其他也没啥,就是运营部门使用起来可能感觉太麻烦,为啥不能一次让我选了,还有说老是忘记选择结束时间,然后就有了我接下来的工作。。。在此,给大家推荐一款很好使用的日期与时间组件…

    2022年5月10日
    37
  • 网络协议主要要素为(网络协议由什么组成)

    一、网络协议网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。1、OSI七层协议OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,从上到下分别是7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层。下面的图表显示不同的协议在最初OSI模型中的位置:7应用层例如HTTP、SMTP…

    2022年4月11日
    56
  • 什么是拉链表_女表拉链的

    什么是拉链表_女表拉链的原文地址:https://blog.csdn.net/xiepeifeng/article/details/42431027在数据仓库的数据模型设计过程中,经常会遇到这样的需求:1.数据量比较大;2.表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等;3.需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态,  比如,查看某一…

    2022年10月16日
    0
  • pycharm安装教程2021.2_pycharm和anaconda结合安装

    pycharm安装教程2021.2_pycharm和anaconda结合安装PyCharm2021.3&Anaconda安装教程

    2022年8月26日
    6
  • DB9 公头母头引脚定义及连接

    DB9 公头母头引脚定义及连接

    2021年12月4日
    65

发表回复

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

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