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算法中,这个摘要是指将任意数据映射成一 ...
最新文章
- TensorFlow 实现分类操作的函数学习
- new File(String Path)加载资源问题
- Android虚拟键盘遮挡EditText的解决方案
- Day 05 名人能树立好榜样吗
- Json入门及基本应用
- 如何HttpWebRequest模拟登陆,获取服务端返回Cookie以便登录请求后使用
- Axure SVN共享 Commit Failed (details Follow) 问题解决
- 熬了几个大夜,学完一套985博士总结的计算机视觉学习笔记(20G高清/PPT/代码)...
- scala Ordering
- Windows下安装和配置Maven的方法及注意事项
- SIEMENS报到第一天
- ACM HDU 2516 取石子游戏(博弈)
- Android 显式意图(Intent) 与 隐式意图
- java给xyz大小排序_Java Collection - 002 排序
- Linux MPLS 总结
- Windows and CentOS IPv4转IPv6隧道方法
- VMware虚拟机win7系统无法上网怎么办
- iptables 实现主机防火墙(四表五链)
- Vue路由守卫(通俗易懂)
- 分布式文件系统(HDFS)与linux系统文件系统关系