md5加密及防止篡改
md5加密
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),它是一种单向加密算法,可以将输入的信息加密转换为128位固定长度的散列值,用于检验数据传输过程中的完整性。
特点:
1.不可逆运算
2. 具有高度的离散性
3. 对相同的数据加密,得到的结果是一样的(也就是复制)。
4.弱碰撞性
作用:
1.密码的加密存储
2.一致性检验
3.文件上传等等
简单实现方式如下:
public static String getMD5String(String str) {
try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance(“MD5”);
// 计算md5函数
md.update(str.getBytes());
// digest()最后确定返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
//一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)
return new BigInteger(1, md.digest()).toString(16);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
具体事例:
云笔记的加密:
public class TestMD5 {
public static void main(String[] args) {String content=readFileByBytes("");try {System.out.println(md52(content));//公开密文:133524c54a3c940ffb9a827650f88672} catch (Exception e) {e.printStackTrace();}
}public static String readFileByBytes(String fileName) {StringBuffer sb = new StringBuffer();try {File file = new File(fileName);InputStream in = null;if (file.isFile() && file.exists()) { //判断文件是否存在//System.out.println("以字节为单位读取文件内容,一次读多个字节:");// 一次读多个字节byte[] tempbytes = new byte[1024];int byteread = 0;in = new FileInputStream(file);// 读入多个字节到字节数组中,byteread为一次读入的字节数while ((byteread = in.read(tempbytes)) != -1) {// System.out.write(tempbytes, 0, byteread);String str = new String(tempbytes, 0, byteread);sb.append(str);}} }catch(Exception e) {}finally {return sb.toString();}}
// 带秘钥加密
public static String md5(String text, String key) throws Exception {// 加密后的字符串String md5str = DigestUtils.md5Hex(text + key);System.out.println("MD5加密后的字符串为:" + md5str);return md5str;
}// 不带秘钥加密public static String md52(String text) throws Exception {// 加密后的字符串String md5str = DigestUtils.md5Hex(text);//System.out.println("MD52加密后的字符串为:" + md5str + "\t长度:" + md5str.length());return md5str;}
/*** MD5验证方法* * @param text明文* @param key密钥* @param md5密文*/
// 根据传入的密钥进行验证
public static boolean verify(String text, String key, String md5) throws Exception {String md5str = md5(text, key);if (md5str.equalsIgnoreCase(md5)) {System.out.println("MD5验证通过");return true;}return false;
}
}
实现结果:
一分耕耘一分收获
md5加密及防止篡改相关推荐
- MD5加密防止文件篡改
MD5加密防止文件篡改 1.读取文件 public static String readFileByBytes(String fileName) {StringBuffer sb = new Stri ...
- 利用Java自带的MD5加密java.security.MessageDigest;
MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著 ...
- linux md5 加密字符串和文件方法
linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意 ...
- python使用md5加密_如何使用Python创建自己的加密货币
python使用md5加密 With the current rise of cryptocurrencies, blockchain is creating a buzz in the techno ...
- C#常用加密解密方法(MD5加密解密)
在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家. 先看看加密的基本概念: "加密",是一种限制对网络上传输数据的访问权的技术.原始数据( ...
- php md5加密成字符串,如何使用php进行字符串的md5加密
MD5是什么? MD5是一种信息摘要算法,它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串,并且一个文件所对应的MD5摘要是固定的,当文件内容变化后,其MD5值也会不一样,当然,它的过 ...
- Java实现MD5加密以及解密
MD5的介绍 从本质上来说,MD5并不是一种加密算法,其全称是Message Digest Algorithm MD5(中文名:信息摘要算法第五版),为计算机安全领域广泛使用的一种散列函数,主要用于确 ...
- MD5加密解密是什么?它有什么用途?
MD5的全程是Message-Digest Algorithm 5,在理论上,MD5是一种单向的哈希散列.通俗一点来说,MD5其实就是对我们需要的数据.文字信息进行加密解密的一种散列算法,跟暗号相似但 ...
- MD5加密原理解析及OC版原理实现
MD5加密原理解析及OC版原理实现 一.MD5算法基础概念 MD5算法是Hash算法的一种,叫做讯息摘要演算法.所谓摘要,从字面意思理解,是指内容的大概.在MD5算法中,这个摘要是指将任意数据映射成一 ...
最新文章
- CES 2021线上大会前瞻、Roblox 估值近300亿美元、联想将推出企业级 AR 眼镜等|Decode the Week...
- C++ —— C++数据类型
- 【算法】数组与矩阵问题——找到无序数组中最小的k个数
- (35)FPGA面试技能提升篇(AD、DA、时钟芯片)
- 【340天】我爱刷题系列099(2018.01.11)
- 解决mysql分页数据错乱问题
- stm8s单片机2位数码管显示_AT89S52单片机,实现功能两位数码管显示数字,按下
- 手机硬件研发工程师的主要工作职责是什么?
- 状态寄存器OF,CF,ZF,test,cmp的应用
- 广告创作的灵魂---创意
- APM直升机调试记录
- Python:代码覆盖率工具coverage
- lisp 阿基米德螺旋_用CAD如何画阿基米德螺旋线
- 人工智能 - A*算法解决迷宫问题 附源码和可视化显示
- Docker的安装与基本使用(一)---使用Docker的前提条件和三要素
- 恒源云(GPUSHARE)_CV训练时容易忽视的数据标签问题
- 云中的安全api使用云端点espv2 beta运行云功能和应用程序引擎
- 如何实现OpenStack STT隧道(by quqi99)
- [OpenAirInterface实战-4] :OAI支持的4G LTE功能集
- selenium之css元素定位方法
热门文章
- python爬取今日头条_Python3网络爬虫实战-36、分析Ajax爬取今日头条街拍美图
- python爬取今日头条后台数据_Python爬虫实战入门五:获取JS动态内容—爬取今日头条...
- 罗侍田:“全员编程,广泛嵌入”(三)— 物联网时代(一)
- 笔记本接html后无声,外接显示器后没声音怎么回事
- Nginx中location、proxy_pass后方加不加斜杠/的区别
- 给Redis配置环境变量
- 2019最新pc微信hook教程免费分享
- i5 13490f和i7 13790f选哪个 酷睿i513490f和i713790f对比
- 将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客,在酷炫的界面中保护隐私
- 第25集丨人生中最高的精神价值