MD5加密与Hash加密

一.Md5加密

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。

MD5 是非对称的加密算法(PS:对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样)

 1 实现代码:
 2 public class MD5 {
 3     /**
 4      * MD5方法
 5      *
 6      * @param text 明文
 7      * @param key 密钥
 8      * @return 密文
 9      * @throws Exception
10      */
11     public static String md5(String text, String key) throws Exception {
12         //加密后的字符串
13         String encodeStr=DigestUtils.md5Hex(text + key);
14         System.out.println("MD5加密后的字符串为:encodeStr="+encodeStr);
15         return encodeStr;
16         }
17
18 }

二.Hash加密

1. hashcode值是int的,64位。int hashCode()。

2. java object类默认的hashcode()计算方法是根据对象的内存地址来计算的。所以可由此来判断默认不重写hashcode()方法的两个对象是否相同。

3. 可重写obejetc 类的hashCode()方法,去根据object对象的实际内容生成hashcode值,比如String类,改写了hashcode(),根据string字符串的内容区生成hashcode,而非根据object类默认的内存地址。

4.hashcode值是64为int值。hashcode值是不可逆的,即无法根据hashcode值反推原值。但要注意:hashcode是可能重复的,及不同的原始值,可能hashcode相同。这也就是为什么hashmap还有个equal()方法来判断两个值是否相等。

 1 public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
 2
 3
 4     String ps = "111111ieou";
 5
 6     MessageDigest messageDigest;
 7     messageDigest = MessageDigest.getInstance("SHA-256");
 8     messageDigest.update(ps.getBytes("UTF-8"));
 9     String encodeStr = byte2Hex(messageDigest.digest());
10
11     System.out.println(encodeStr);
12
13 }
14
15 private static String byte2Hex(byte[] bytes) {
16     StringBuilder stringBuffer = new StringBuilder();
17     String temp = null;
18     for (int i = 0; i < bytes.length; i++) {
19         temp = Integer.toHexString(bytes[i] & 0xFF);
20         if (temp.length() == 1) {
21         //1得到一位的进行补0操作
22             stringBuffer.append("0");
23         }
24         stringBuffer.append(temp);
25     }
26     return stringBuffer.toString();
27 }

原文地址:https://www.cnblogs.com/wang-yaz/p/10364984.html

时间: 02-12

MD5加密与Hash加密的相关文章

对称加密与非对称加密

(一)对称加密(Symmetric Cryptography) 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解:但如果你的密钥有1 MB

C# salt+hash 加密

一.先明确几个基本概念 1.伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的算法来产生的.伪随机数并不是假随机 数,这里的"伪"是有规律的意思,就  是计算机产生的伪随机数既是随机的又是有规律的.怎样理解呢?产生的伪随机数有时遵守一定的规律,有 时不遵守任何规律:伪随机数有一部分遵守一定的规律:另一部分不遵守任何规律.比如"世上没有两片形状完全相同的树叶",这正是点到了事 物的特性,即随机性,但是每种

python提供了一个进行hash加密的模块:hashlib

python提供了一个进行hash加密的模块:hashlib下面主要记录下其中的md5加密方式 import hashlib data1 = 'sada' #####字母和数字 m = hashlib.md5(data1.encode('utf-8')) print(m.hexdigest()) data='我是' #####中文 b = hashlib.md5(data.encode('gb2312')) print(b.hexdigest()) def md5(s): ####这是一个MD5

md5增加指定的加密规则,进行加密

import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.springframework.util.StringUtils; public class MD5 { private static final String ALGORITHM = "MD5"; public

C#:使用MD5对用户密码加密与解密

C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns&

支持APP手机应用(android和ios)接口调用 ,传输验证可用 shiro 的 MD5、SHA 等加密

请认准本正版代码,售后技术有保障,代码有持续更新.(盗版可耻,违者必究)         此为本公司团队开发 ------------------------------------------------------------------------------------------------------------------------- 1. 有 oracle .msyql.spring3.0.spring4.0  一共 4 套版本全部提供没有打jar没有加密的源代码(最下面截图2

转 C#:使用MD5对用户密码加密与解密

C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns&

md5 对字符串进行加密的方法 简单好用

1 public static String makeMD5(String password) { 2 String result = null; 3 4 MessageDigest messageDigest; 5 try { 6 messageDigest = MessageDigest.getInstance("MD5"); 7 messageDigest.update(password.getBytes()); 8 result = new BigInteger(1, mess

ASP.NET实现MD5加密和SHA1加密

MD5加密和SHA1加密的命名空间是在using System.Web.Security; /// <summary> /// 返回加密字符串 /// </summary> /// <param name="content">要加密的字符串</param> /// <param name="Type">加密类型,默认MD5,其它值SHA1</param> /// <returns>&

对称加密和非对称加密

1.对称加密----密钥加密    DES    IDEA    AES特点:算法公开,计算量小,加密速度快,加密效率高,不足:不安全原理:在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥.2.不对称加密----公钥和私钥    RSA    DSA原理:收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥.由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密