MD5明文密码加密

article/2025/11/5 13:48:08

MD5

一、加密缘由

首先看一下未使用MD5加密的数据库

这样的话如果黑客攻击数据库的时候得到数据库的资料(主要密码)就会导致用户的财产等受到危害,所以需要对密码进行加密操作

二、加密的算法MD5

2.1、运用了单向加密算法(下面举个例子)

明文:zqs12345
密文: 02F5D4E65503F85D7E94AA8ADD5BE907(32位)
在这里插入图片描述

2.2、MD5加密的特点

  1. (不可逆),意思是当MD5对密码加密后是不能逆向解码的,保证了数据的安全
  2. (适用广泛),意思是所有的字符串都能加密成上图的32位的字符串
    但是后面出现了MD5碰撞使得MD5加密也变得不靠谱

2.3、MD5碰撞

MD5碰撞主要意思是使用穷举法对密文进行穷举,最终得到一个和密文一样的字符串,从而得到明文的密码
eg:
在这里插入图片描述
这里就用到了穷举法解密的方式得到了一个95%正确度的明文密码,进而最后引进salt(干扰项){也就是加盐的操作}

2.3、salt(加盐)

意思是对密码先加入一串字符串(加盐),然后再进行MD5算法得到一个32位的字符串
加盐后加密
加盐后加密
加盐后解密
在这里插入图片描述
这里发现网上的一些解码器解不出来,有的解的出来的还要收费
如果解密出来了,别人也不知道到底那几个字符是密码
adminzqs12345admin

三、具体实现(加一个user到数据库)

3.1、准备MD5算法工具类(Md5Util)

package com.System.utils;import java.security.MessageDigest;/*** 写一个MD5算法,运行结果与MySQL的md5()函数相同* 将明文密码转成MD5密码*/
public final class Md5Util {private Md5Util(){}/*** 将明文密码转成MD5密码 */public static String encodeByMd5(String password) throws Exception{//Java中MessageDigest类封装了MD5和SHA算法,今天我们只要MD5算法MessageDigest md5 = MessageDigest.getInstance("MD5");//调用MD5算法,即返回16个byte类型的值byte[] byteArray = md5.digest(password.getBytes());//注意:MessageDigest只能将String转成byte[],接下来的事情,由我们程序员来完成return byteArrayToHexString(byteArray);}/*** 将byte[]转在16进制字符串 */private static String byteArrayToHexString(byte[] byteArray) {StringBuffer sb = new StringBuffer();//遍历for(byte b : byteArray){//16次//取出每一个byte类型,进行转换String hex = byteToHexString(b);//将转换后的值放入StringBuffer中sb.append(hex);}return sb.toString();}/*** 将byte转在16进制字符串 */private static String byteToHexString(byte b) {//-31转成e1,10转成0a,。。。//将byte类型赋给int类型int n = b;//如果n是负数if(n < 0){//转正数//-31的16进制数,等价于求225的16进制数 n = 256 + n;}//商(14),数组的下标int d1 = n / 16;//余(1),数组的下标int d2 = n % 16;//通过下标取值return hex[d1] + hex[d2];}private static String[] hex = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};/*** 测试*/public static void main(String[] args) throws Exception{String password = "123456";String passwordMD5 = Md5Util.encodeByMd5(password);System.out.println(password);System.out.println(passwordMD5);}
}

3.2、准备数据库

在这里插入图片描述

3.3、配置盐

1、实体类

/*** @ClassName* @Description TODO* @Author ZQS* @Date 2020/8/2 0002 23:04* @Version 1.0**/
@Component
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Salt {@Value("${salt.prefix}")String saltPrefix;@Value("${salt.suffix}")String saltSuffix;}

2、盐的配置文件
在这里插入图片描述
3、读取配置文件

在这里插入图片描述
4、实现add方法(调用加盐工具类中的encodeByMd5()静态方法)
在这里插入图片描述
在这里插入图片描述

5、得到输出的结果
在这里插入图片描述
6、验证数据库的结果
在这里插入图片描述


http://chatgpt.dhexx.cn/article/NGfujX1X.shtml

相关文章

Unity基础: 对Anchors锚点的使用

在UI对象上是用RectTransform组件来控制位置和大小的&#xff0c;在RectTransform中有一个Anchors属性。Anchors属性可以将当前对象的四个角锚点定位到父对象的某个位置&#xff0c;并且Anchor还允许子对象的宽高随着父对象的宽高一起拉伸。 上面一个示例中显示的就是将一个Ima…

(笔记)yolov5自适应anchors

训练一开始会先计算Best Possible Recall (BPR),当BPR < 0.98时&#xff0c;再在kmean_anchors函数中进行k 均值和遗传学习算法更新anchors。 情况一&#xff1a; 在进行yolov5训练的时候&#xff0c;会输出&#xff1a; Analyzing anchors... Best Possible Recall (BPR…

Roson讲Qt#16 QML中的anchors(锚)

QML中有一个数据类型叫Item&#xff0c;Item里面有很多属性&#xff0c;其中一个就是anchors. anchors翻译过来叫“锚”&#xff0c;锚可能不好理解&#xff0c;在我看来&#xff0c;可以把anchors当成是一个控件浓缩而成的一个点&#xff0c;可以通过设置点的上下左右等属性来…

Qml基于锚(anchors)的布局

锚(anchors)布局&#xff0c;每一个项目都可以认为有一组无形的锚线 left,horizontalCenter,right,top,verticalCenter,baseline和bottom. 如上图&#xff1a;图中没有显示baseline&#xff0c;它是一条假想的线&#xff0c;文本坐落在这条线上。对于没有文本的项目它与top相同…

RPN之生成anchors

看不懂anchor生成方法&#xff0c;就看不懂参数。 faster_rcnn的anchors生成 在这里我就不看faster_rcnn的anchors生成源代码了&#xff0c;我们用numpy自己去实现&#xff0c;在128*128大小的图片中生成anchors. 开始上代码 import numpy as np import matplotlib.pyplot …

Qml anchors锚点布局

关于qml的锚点布局的一些分享&#xff0c;并不能算是教学之类的。 锚点布局会自动设置宽度高度&#xff0c;并且优先级比 width height更高 import QtQuick 2.13 import QtQuick.Window 2.12 import QtQml 2.13Window {width: 640height: 480visible: truetitle: qsTr("a…

yolo_anchors.txt超参数值设置

keras-yolov3在训练自定义图片集之前&#xff0c;设置合理的yolo_anchors.txt值&#xff0c;有利于模型训练的收敛&#xff0c;一般都带有默认的参数如下&#xff1a; 在实际项目中&#xff0c;yolo_anchors的值可以根据kmeans.py计算获取&#xff0c;通过聚类得到最佳anchors数…

QML之anchors锚布局

QML的布局方式一般采用两种&#xff0c;一种就是直接设置&#xff0c;X与Y坐标的值。一种是采用相对位置布局&#xff0c;anchors锚布局。使用锚布局的能够使界面更紧凑&#xff0c;更有整体化。我个人相对比较喜欢使用锚布局&#xff0c;选取一个最合适的参考点&#xff0c;其…

YOLOV5源代码学习之check_anchors()函数

该函数主要在train.py中调用 为了方便直观的阅读代码&#xff0c;对代码中的变量值进行了输出 def check_anchors(dataset, model, thr4.0, imgsz640):# Check anchor fit to data, recompute if necessaryprefix colorstr(autoanchor: )print(f\n{prefix}Analyzing anchors.…

QML入门教程(3): anchors的用法

QML的布局方法是anchors,锚。 例如界面上四个按钮,可以用绝对坐标 (x, y) 设置他们的位置, 代码如下: import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5Window {visible: truewidth: 320height: 480title: qsTr("Hello World")co…

目标检测2——借Detectron2源码理解Anchors与RPN

文章目录 1.Regionn Proposal Network背景2.Regionn Proposal Network的结构3.Anchors4.Regionn Proposal Network的训练参考资料 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 1.Regionn Proposal Network背景 RPN&#xff0c;Region …

QML基础:锚anchors

正文 除了传统的Grid、Row和Column外,Qt Quick还提供了一种使用锚点的方法来布局。可以将每个元素视为具有7条不可见的“锚定线”的集合:left、horizontalCenter、right、top、verticalCenter、baseline和bottom。 baseline(上图未展示)对应于文本所在的虚线。对于没有文…

细说目标检测中的Anchors

本文转载自AI公园。 作者&#xff1a;Raghul Asokan 编译&#xff1a;ronghuaiyang 导读 给大家再次解释一下Anchors在物体检测中的作用。 今天&#xff0c;我将讨论在物体检测器中引入的一个优雅的概念 —— Anchors&#xff0c;它是如何帮助检测图像中的物体&#xff0c;以及…

anchors布局

anchors布局 import QtQuick 2.2 import QtQuick.Window 2.2 Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Rectangle {width: 300;height: 200;color: "blue";Rectangle {id: rectl;anchors.left: parent.left;anchors.leftMar…

PDU Session Anchors

在同一时刻&#xff0c;UE可以建立多条到同一个DN或不同DN的PDU会话&#xff1b;建立到同一个DN的多个PDU会话时&#xff0c;通过不同的UPF&#xff1b;每条PDU会话对应的SMF可以不同。 为了支持到DN的可选择路由功能或支持SSC mode 3模式&#xff0c;SMF可以控制PDU session的…

kmeans++聚类生成anchors

kmeans聚类生成anchors 说明 使用yolo系列通常需要通过kmeans聚类算法生成anchors&#xff0c; 但kmeans算法本身具有一定的局限性&#xff0c;聚类结果容易受初始值选取影响。 因此通过改进原kmeans_for_anchors.py实现 kmeans聚类生成anchors。具体实现如下&#xff1a; i…

anchors如何获得_Yolov3通过k-means聚类得到自己数据的anchors

本文代码参考: https://github.com/lars76/kmeans-anchor-boxes Yolov3中默认的9个anchors是作者通过对voc数据聚类得到的。 anchors 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 不过&#xff0c;当我们训练自己的数据时&#xff0c;如果也采用默认的anchors&#xff0c;可…

Unity 锚点 Anchors

锚点介绍 锚点是Rect Transform组件中的属性&#xff0c;用于描述当前物体相对于父物体的对齐方式。 选中一个UI元素&#xff0c;就会显示其父物体的矩形框以及相对于父物体的锚点。 锚点只能位于父物体的矩形框之内。 锚点表现为四个相对出现的小三角形&#xff0c; 它们时而…

QML anchors 锚布局

锚布局 锚布局有7种锚线 anchors.leftanchors.rightanchors.topanchors.bottomanchors.horizontalCenteranchors.verticalCenteranchors.baseline 5种锚边距 anchors.leftMarginanchors.rightMarginanchors.topMarginanchors.bottomMarginanchors.margins 3种锚偏移 anchor…

anchors生成

关于修改anchor anchor与图片的输入分辨率有关系。 You should use this repository to get anchors: https://github.com/AlexeyAB/darknet By using this command for Yolo v3 (or v2): ./darknet detector calc_anchors data/hand.data -num_of_clusters 9 -width 720 -he…