`

MD5 and SHA-1

阅读更多
MD5 and SHA-1
package common.util.security;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class EncryptUtil {

	public static void main(String[] args) {
		//md5加密测试
		String md5_1 = md5("123");
		String md5_2 = md5("abc");
		System.out.println(md5_1 + "\n" + md5_2);
		System.out.println("md5 length: " + md5_1.length());
		//sha加密测试
		String sha_1 = sha("123");
		String sha_2 = sha("abc");
		System.out.println(sha_1 + "\n" + sha_2);
		System.out.println("sha length: " + sha_1.length());
	}

	// md5加密
	public static String md5(String inputText) {
		return encrypt(inputText, "md5");
	}

	// sha加密
	public static String sha(String inputText) {
		return encrypt(inputText, "sha-1");
	}

	/**
	 * md5或者sha-1加密
	 * 
	 * @param inputText
	 *            要加密的内容
	 * @param algorithmName
	 *            加密算法名称:md5或者sha-1,不区分大小写
	 * @return
	 */
	private static String encrypt(String inputText, String algorithmName) {
		if (inputText == null || "".equals(inputText.trim())) {
			throw new IllegalArgumentException("请输入要加密的内容");
		}
		if (algorithmName == null || "".equals(algorithmName.trim())) {
			algorithmName = "md5";
		}
		String encryptText = null;
		try {
			MessageDigest m = MessageDigest.getInstance(algorithmName);
			m.update(inputText.getBytes("UTF8"));
			byte s[] = m.digest();
			// m.digest(inputText.getBytes("UTF8"));
			return hex(s);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return encryptText;
	}

	// 返回十六进制字符串
	private static String hex(byte[] arr) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < arr.length; ++i) {
			sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1,
					3));
		}
		return sb.toString();
	}
分享到:
评论

相关推荐

    windows校验MD5, SHA-1, SHA-256 & SHA-512工具

    压缩包中的`MD5_and_SHA_Checksum_Utility.exe`很可能是一个实用程序,可以方便地计算文件的MD5、SHA-1、SHA-256和SHA-512哈希值。用户只需要运行这个程序,然后选择要校验的文件,它将自动计算并显示对应的哈希值,...

    SHA.zip_On Message_The SHA-1 message

    SHA-1 produces a message digest based on principles similar to those used by Ronald L. Rivest of MIT in the design of the MD4 and MD5 message digest algorithms, but has a more conservative design.SHA-...

    MD5_and_SHA_Checksum_Utility,文件hash计算

    其中,SHA-1与MD5类似,但更复杂,其输出长度为160位(20字节)。由于SHA-1的安全性也逐渐受到质疑,现在更多地使用SHA-2或SHA-3家族。SHA-256是SHA-2家族的一部分,输出256位的摘要,提供更高的安全性和抗碰撞能力...

    安全散列算法SHA-1介绍

    SHA-1的设计灵感源自MD4算法,因此它与MD5算法有很多共同之处。SHA-1能够将任意长度的输入明文转化为一个固定长度的160比特的消息摘要。这种转换过程是单向的,即从明文到摘要的转换很容易,但从摘要逆向推导出原始...

    王晓云:How to Break MD5 and Other Hash Functions

    MD5和SHA-1是当前两个被广泛使用的哈希函数。SHA-1由美国国家标准与技术研究院(NIST)发布,旨在替代MD5。然而,SHA-1也被发现存在一些安全问题,最终被更为安全的SHA-2和SHA-3系列函数所取代。 王晓云博士的论文...

    MD5_and_SHA_Checksum_Utility

    MD5_and_SHA_Checksum_Utility

    高度可移植的C系统库:线程和同步原语,套接字(TCP,UDP,SCTP),IPv4和IPv6,IPC,哈希函数(MD5,SHA-1,SHA-2,SHA-3,GOST),二进制树(RB ,AVL)等。 本机代码性能。-C/C++开发

    plibsys为您提供的功能:平台无关的数据类型线程互斥对象条件变量读写锁系统范围的信号灯系统范围的共享内存优化的自旋锁原子操作带有IPv4和IPv6的套接字支持(UDP,TCP,SCTP)哈希函数:MD5,SHA- 1,SHA-2,SHA-3...

    DataHash Version 1.7.1 (12 KB) MD5 or SHA hash for array

    Hashing method: 'SHA-1', 'SHA-256', 'SHA-384', 'SHA-512', 'MD2', 'MD5'. Output format: 'hex', 'HEX', 'double', 'uint8', 'base64' Input type: 'array': The contents, type and size of the input [Data] ...

    王晓云教授的md5-attack的论文

    然而,由于其存在安全性问题,特别是在2004年Collin Plowman发现MD5碰撞攻击后,MD5逐渐被淘汰,取而代之的是更安全的SHA-2或SHA-3家族。 这篇由王晓云教授撰写的"md5-attack"论文深入探讨了MD5的弱点和攻击方法,...

    MD5算法研究Message-Digest Algorithm 5

    因此,在安全性要求较高的场景下,如金融交易、敏感数据保护等领域,已经逐渐转向使用更安全的哈希算法如SHA-256等。 ### 结论 尽管MD5存在一些安全上的不足,但由于其使用无需支付版权费用的特点,对于大多数非...

    Android代码-Hasher

    You can Easily Hash using MD5, SHA-1, SHA-256, SHA-384, or SHA-512 with ease. ! This Library is Written in Kotlin ! How to Use In Java //Call hash() method using the object Hasher.hash(value,HashType)...

    MD5--c++.rar

    MD5算法的核心是一个四轮的迭代过程,每轮由六个子函数组成,这些子函数通过不同的位操作(如XOR、AND、ROTATE等)来混合输入的数据。最终,MD5会将任意长度的输入(或消息)转换为一个128位的固定长度摘要,通常以...

    C#BouncyCastle1.7Dll文件

    MD4withRSA, MD5withRSA, RIPEMD128withRSA, RIPEMD160withRSA, RIPEMD256withRSA, SHA-1withRSA, SHA-224withRSA, SHA-256withRSAandMGF1, SHA-384withRSAandMGF1, SHA-512withRSAandMGF1, SHA-1withDSA, and SHA-...

    Hash 1.1 MD5/SHA256/CRC32计算器|校验文件是否完整无损

    Hash 1.1下载页面,在这里你可以了解更多Hash 1.1的软件信息、下载地址、软件预览图、软件简介、相关软件、...Hash is a program for calculate (and optionally verify) a MD5, SHA256 hash and CRC32, LRC checksum.

    MD5-class.zip_md5_md5 c语言

    3. **MD5主循环**:MD5的主循环由64步组成,每步都包含4个不同的操作,分别是:异或(XOR)、循环左移(Shift)、与(AND)、加(ADD)。这些操作对A、B、C、D四个变量进行运算,每次循环都会更新这四个变量的值。 4. **...

    常用散列算法类源代码(6种)

    本资源包含六种常见的散列算法的C++源代码实现,包括CRC32、MD5、SHA-1、SHA-256、SHA-512以及Tiger-192。这些算法各有特点,适用于不同的应用场景。 1. CRC32(Cyclic Redundancy Check,循环冗余校验): CRC32是...

    SHA(安全散列算法)

    - **SHA-3**:为了应对SHA-1的安全性问题,NIST于2012年公布了新的散列标准SHA-3,该标准引入了新的设计原则,提供了更高级别的安全保障。 - **量子计算的影响**:随着量子计算的发展,未来的散列算法需要考虑如何...

    论文研究-MD5 Calculation and Decryption Using CUDA on GPU.pdf

    现在,美国政府的多数应用都要求使用SHA-2系列哈希函数来取代MD5。 尽管如此,MD5依然广泛应用于数据完整性校验,比如文件传输完整性校验,它能够提供一定程度的保证,确保文件传输过程中未被篡改。MD5的128位哈希...

    常用算法源码3des|aes|mac|md5|rc|sha

    hash functions BLAKE2 (BLAKE2b, BLAKE2s), Keccack (F1600), SHA-1, SHA-2, SHA-3, Tiger, WHIRLPOOL, RIPEMD-128, RIPEMD-256, RIPEMD-160, RIPEMD-320 public-key cryptography RSA, DSA, Determinsitic DSA, ...

Global site tag (gtag.js) - Google Analytics