Java 加解密技术系列之 MD5

2023-10-27



上一篇文章中,介绍了最基础的编码方式 — — BASE64,也简单的提了一下编码的原理。这篇文章继续加解密的系列,当然也是介绍比较基础的加密方式 — — MD5,MD5 属于单向加密算法,是不可逆的加密方式,也就是说,采用了 MD5 加密方式加密之后,就不能对加密的结果进行解密,得到原有的字符串,这是不可以的。

背景

相信在我们的生活中,MD5 用到的还是很广泛的。在说 MD5 之前,首先来了解一下单向加密算法都有哪些。当然,MD5 是其中之一,除此之外还有,SHA,HMAC 等这几种算法。不过,今天这篇文章,我们只介绍 MD5,至于 SHA 和 HMAC 在后续的文章中会陆续的介绍。

正文

MD5,全称为“Message Digest Algorithm 5”,中文名“消息摘要算法第五版”,它是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。严格来说,它是一种摘要算法,是确保信息完整性的。不过,在某种意义上来说,也可以算作一种加密算法。
MD5 算法具有很多特点:
  • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  • 容易计算:从原数据计算出MD5值很容易。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  • 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
  • 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
MD5 的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
MD5 其实在我们生活中是很常用的,似乎你并没有注意到,当你下载了一个镜像之后,你会发现下载页面还提供了一组 MD5 值,那么这组 MD5 值是用来做什么的呢?了解了 MD5 的作用之后,你就不难想到,MD5 是用来验证文件的一致性的,当你下载好镜像之后,你需要对该镜像做一次 MD5 的校验,得到的 MD5 值与下载页面提供的 MD5 值进行对比,以此来验证该
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 加解密技术系列之 MD5 的相关文章

  • iPhone:快速哈希函数,用于将网络图像(url)存储为文件(哈希文件名)

    iPhone 可用于对 Web url 图像 进行哈希处理的快速哈希函数是什么 我想将缓存的 Web 图像存储为一个文件 并以哈希值作为文件名 因为我认为原始 Web url 可能包含奇怪的字符 可能会导致文件系统出现问题 哈希函数不需要是
  • 计算大文件的Md5哈希值

    我想让它变得非常清楚和简单 如果我有 1gb 内存并且我想计算 2gb 文件的 md5 哈希值怎么办 目前 我正在这样做 private static string Md5Hash byte input byte hash MD5 Crea
  • 如何使用java或groovy计算目录上的md5校验和?

    我希望使用 java 或 groovy 来获取完整目录的 md5 校验和 我必须将源目录复制到目标 校验源和目标 然后删除源目录 我找到了这个文件脚本 但是如何对目录执行相同的操作 import java security MessageD
  • jquery中如何将密码转换成md5? [复制]

    这个问题在这里已经有答案了 实际上我正在创建更改密码页面 这是我检查旧密码是否与现有密码匹配的功能 该密码存储在数据库中的 MD5 中 因此我想首先将该密码转换为 MD5 然后我可以检查该密码 这是代码 function fnIsValid
  • 更改现有数据库上的哈希函数

    我正在阅读一些有关密码哈希的内容 我见过 SHA 256 gt MD5 这让我思考应用程序如何处理从一种哈希函数到另一种哈希函数的变化 如果有人实现一个使用 MD5 对其密码进行哈希处理的应用程序 会发生什么情况 然后他们决定 SHA 25
  • PHP.net 说 md5() 和 sha1() 不适合密码?

    http www php net manual en faq passwords php faq passwords fasthash http www php net manual en faq passwords php faq pas
  • 通过 PHP 脚本下载文件会导致错误/不同的 md5 校验和 - 为什么?

    我正在尝试通过 PHP 实现间接下载 在客户端 我使用 md5 验证下载的文件是否正确 当我直接下载文件时 http server folder file apk http server folder file apk 我得到与文件系统上相
  • MD5产生碰撞之前有多少个随机元素?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我在 Amazon S3 上有一个图像库 对于每个图像 我在服务器上对源 URL 进行 md5
  • PHP - MD5、SHA、哈希安全

    我是一个用 PHP 构建的新网站的开发人员 我想知道什么是最好的 用于散列的东西 我已经研究过 md5 和 sha1 但还有更安全的吗 如果这是一个菜鸟问题 我很抱歉 但我是 PHP 安全新手 我正在努力让我的 网站尽可能安全 还有什么是盐
  • BSD md5 与 GNU md5sum 输出格式?

    任何人都知道为什么 BSD md5 程序会产生这种格式的哈希输出 MD5 checksum md5 9eb7a54d24dbf6a2eb9f7ce7a1853cd0 而 GNU md5sum 会产生像这样更合理的格式 9eb7a54d24d
  • 可以从 Base64 字符串中删除等号吗?

    我有一个字符串 我将其编码为 Base64 以节省空间 如果我去掉最后的等号有什么大不了的吗 这会显着降低熵吗 我该如何确保结果字符串的长度是固定的 gt gt gt base64 b64encode combined digest alt
  • 在 bash/ubuntu 中对数百万个字符串进行快速 md5sum

    我需要 ubuntu 上的 bash 脚本中大约 300 万个字符串的 MD5 和 300 万个字符串 gt 300 万个 MD5 哈希值 每个字符串的简单实现大约需要 0 005 秒 就这样4个多小时了 存在哪些更快的替代方案 有没有办法
  • 截断 MD5 的 ECDF 图

    在这个link https stackoverflow com questions 8184941 uniform distribution of truncated md5 它表示截断的 MD5 是均匀分布的 我想使用 PySpark 检
  • 在 swift 中使用 TripleDes 和 MD5

    我有一个使用 TripleDes 和 MD5 的 Java 代码算法 这是我的java代码 private String encrypt String message String secretKey throws Exception Me
  • 我如何编写 Perl 脚本来计算目录中每个文件的 MD5 和? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法编写Perl脚本来计算目录中每个文件的MD5sum 如果是这样 我该怎么做 有很多方法可以做到这一点 但归结为您需要执行的两个操
  • SHA 足以检查文件重复吗? (PHP 中的 sha1_file)

    假设您想创建一个文件托管站点 供人们上传文件并向他们的朋友发送链接以供稍后检索 并且您想确保文件在我们存储文件的位置重复 那么 PHP 的 sha1 file 是否足以完成该任务 有什么理由不使用 md5 file 来代替吗 对于前端 它将
  • 有没有办法在Python中使用非openssl md5作为hashlib?

    我生成 md5 内容哈希值用于上传验证 但最近我注意到 对于在启用 FIPS 的计算机上运行的任何用户来说 这都会失败 FIPS 禁用 openssl md5 导致ValueError当我尝试初始化 hashlib 时 通常我会使用 SHA
  • adler32 校验和的可靠性如何?

    我想知道与例如相比 adler32 校验和有多可靠 md5 校验和 维基百科上说 adler32 比 md5 可靠得多 所以我想知道有多少 以及以何种方式 更具体地说 我想知道它是否足够可靠 作为对大小为 20GB 以上的 tar 文件的长
  • 使用 Java 的 Apache Http 摘要身份验证

    我目前正在开发一个 Java 项目 但无法使 http 摘要身份验证正常工作 我尝试使用 Apache 网站 但没有帮助 我有一个需要 HTTP 摘要身份验证的网站 DefaultHttpClient httpclient new Defa
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过

随机推荐

  • vue监听一个对象的多个属性

    可以分开监听 但是不能深度监听 不能监听对象 只能 监听属性 如果监听对象 直接在handler外层加上对象名就可以了 下面加deep和immediate都为true watch lineType t console log t rowTy
  • RT-Thread记录(十四、I/O 设备模型之ADC设备)

    RT Thread ADC 设备学习使用 目录 前言 一 ADC 采样基础 1 1 ADC 通道 1 2 ADC 分辨率 1 3 ADC 采样计算 二 ADC 设备操作函数 2 1 查找 ADC 设备 2 2 使能 关闭 ADC 通道 2
  • 前端工程化:express服务端开发

    目录 1 express基本使用 1 安装依赖 2 创建服务 3 启动服务 2 express中间件和异常 1 中间件分3种 2 异常捕获有3种 3 https服务和静态服务 1 https服务 2 静态服务 1 express基本使用 1
  • 揭秘-只有13台DNS根域名服务器原因

    引言 什么是DNS DNS服务 将主机名映射成IP地址 一个主机可以有一个规范主机名 多个别名 www sina com就是个别名 邮件服务器也有别名 目的 负载平衡 通过IP分流 DNS的架构 前面我们说DNS是将主机名对应到IP 那么这
  • ConstraintLayout使用总结

    0dp的使用 app layout constrainedWidth true android layout width wrap content android layout width 0dp 效果是一样的 可以自动充满剩余空间 例子一
  • 【ZT】怎么查PC的CPU序列号?(wmic CPU get ProcessorID。WIN7可用)

    https zhidao baidu com question 38740362 html 怎么查CPU序列号 怎么查CPU序列号 我的是AMD Athlon4000 2的处理器 处理器上面写的是 AD04000IA5DD CAARG 07
  • CSS3新增了哪些新特性?

    一 是什么 css 即层叠样式表 Cascading Style Sheets 的简称 是一种标记语言 由浏览器解释执行用来使页面变得更美观 css3是css的最新标准 是向后兼容的 CSS1 2的特性在CSS3 里都是可以使用的 而CSS
  • C语言进阶,第4节-自定义类型详解(结构体+枚举+联合)

    一 结构体 1 结构的声明 描述一个学生 struct Stu 结构体标签 成员变量 char name 20 int age char sex 5 char id 20 x x 为 struct Stu 类型的变量 匿名结构体类型 str
  • LLama 2部署教程+私有模型分发

    近日 Meta发布了LLama的最新版本 LLama2 尽管其对中文的处理能力尚有待提升 但其整体表现无疑是令人瞩目的 在发布当天 我便迫切地将其下载下来进行试用 发现相比之前的版本 LLama2在多个方面都实现了显著的进步 特别是在编程能
  • stable diffusion实践操作-文生图

    本文专门开一节写文生图相关的内容 在看之前 可以同步关注 stable diffusion实践操作 正文 1 liblib SD1 5底模 lora baihuaniang 1 0 详细信息 底模 SD 1 5 Lora baihuania
  • 【翻译】进程间通信是什么?

    从单体架构到微服务的转变需要构成应用程序的不同服务之间的通信 服务实例通常是需要以某种方式相互通信的进程 这就是进程间通信 IPC 有时称为服务间通信 ISC 的作用 人们 往往想到的IPC机制是RESTful APIs 因为这仍然是使用最
  • 在java里怎样将 List按指定长度分割

    需求背景 在实现业务功能时 难免会遇到大数据量处理的情况 比如 业务需要处理100000个订单的信息 需要调用外部接口 但接口请求入参限制了参数IDS个数不能超1000 那么就需要将 100000个订单拆分成 100组数据 分组处理 找了很
  • U-Boot 移植

    目录 NXP官方开发板uboot编译测试 查找NXP官方的开发板默认配置文件 defconfig 配置编译NXP官方开发板对应的uboot 烧写验证与驱动测试 定位缺少的驱动 在NXP官方U Boot 中添加自己的开发板 添加开发板默认配置
  • 数据库连接 ORA-12170 TNS connect timeout occurred

    数据库连接出现 ORA 12170 TNS connect timeout occurred这个错误 解决思路 首先连接内网数据库 要排除是不是网络的问题 如果不是网络的问题 再去检查监听是否出现配置错误或其他错误 跟踪路由会有连接超时的现
  • Java中new data()插入数据库---时间相差13h(系统时间是对的,数据库时间也是对的)

    参考了该篇博客 https blog csdn net wo18237095579 article details 90288735 方法 数据库JDBC链接配置加上 serverTimezone GMT 2B8 亲测有效 排查逻辑 1 先
  • java.lang.NumberFormatException 错误及解决办法

    总结几个java lang NumberFormatException 错误及解决办法方法 转载https blog csdn net xiaodongvtion article details 8835668 转载https blog c
  • 【瑞吉外卖day01】

    1 软件开发流程 需求分析 设计 编码 测试 上线运维 软件开发角色分工 软件环境 开发环境 测试环境 生产环境 2 项目技术选型与功能架构 3 数据库环境搭建 Navicat中新建数据库 运行sql 一共建好11张表 4 maven环境搭
  • 解决 vue-cli index.js dev 配置中 assetsPublicPath 的值不能填 "./" 的问题

    问题篇 最近使用frp代理开发微信vue应用 frp代理不直接暴露根目录 因为我的根目录已经被我的博客占用了 所以就使用nginx又代理了一层 访问方式从越来的 wechat youngboy vip 变成 wechat youngboy
  • 【Linux】操作系统&&进程概念

    文章目录 1 冯诺依曼体系结构 2 操作系统 3 进程 进程的基本概念 查看进程和杀死进程 父进程和子进程 通过系统调用创建子进程 1 冯诺依曼体系结构 冯 诺依曼结构也称普林斯顿结构 是一种将程序指令存储器和数据存储器合并在一起的存储器结
  • Java 加解密技术系列之 MD5

    序 上一篇文章中 介绍了最基础的编码方式 BASE64 也简单的提了一下编码的原理 这篇文章继续加解密的系列 当然也是介绍比较基础的加密方式 MD5 MD5 属于单向加密算法 是不可逆的加密方式 也就是说 采用了 MD5 加密方式加密之后