`
cuisuqiang
  • 浏览: 3962764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3672135
社区版块
存档分类
最新评论

JAVA加密算法实现用例 消息摘要

    博客分类:
  • JDK
阅读更多

一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于 SHA1 是产生一个 20 字节的二进制数组)。


消息摘要有两个基本属性:
两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的 SHA1 和麻省理工学院 Ronald Rivest 提出的 MD5

 

package test;
import java.security.MessageDigest;
public class SHA_MD5 {
	public static void main(String[] args) {
		SHA_MD5 my = new SHA_MD5();
		my.testDigest();
	}
	@SuppressWarnings("static-access")
	public void testDigest() {
		try {
			String myinfo = "我的测试信息";
			// MessageDigest alga = MessageDigest.getInstance("MD5");
			MessageDigest alga = MessageDigest.getInstance("SHA-1"); // 生成一个 MessageDigest 类 , 确定计算方法
			alga.update(myinfo.getBytes()); // 添加要进行计算摘要的信息
			byte[] digesta = alga.digest(); // 计算出摘要,(对于MD5是16位,SHA是20位)
			System.out.println("本信息摘要是 :" + byte2hex(digesta));

			// 其他人用相同的方法初始化,添加信息,最后进行比较摘要是否相同
			MessageDigest algb = MessageDigest.getInstance("SHA-1");
			algb.update(myinfo.getBytes());
			if (algb.isEqual(digesta, algb.digest())) {
				System.out.println("信息检查正常");
			} else {
				System.out.println("摘要不相同");
			}
		} catch (java.security.NoSuchAlgorithmException ex) {
			System.out.println("非法摘要算法");
		}
	}
	public String byte2hex(byte[] b) {
		String hs = "";
		String stmp = "";
		for (int n = 0; n < b.length; n++) {
			stmp = (Integer.toHexString(b[n] & 0XFF));
			if (stmp.length() == 1)
				hs = hs + "0" + stmp;
			else
				hs = hs + stmp;
			if (n < b.length - 1)
				hs = hs + ":";
		}
		return hs.toUpperCase();
	}
}

 

请您到ITEYE网站看 java小强 原创,谢谢!

http://cuisuqiang.iteye.com/ 

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!

分享到:
评论

相关推荐

    JAVA上加密算法的实现用例.doc

    在Java中实现加密算法涉及到多个重要的概念和技术,包括单钥密码体制、消息摘要、Diffie-Hellman密钥一致协议、非对称算法和公钥体系以及数字签名。下面将详细阐述这些知识点。 **1. 单钥密码体制** 单钥密码体制,...

    JAVA上加密算法的实现用例.rar_java 加密_加密_加密算法 java

    四、Java加密算法实现步骤 1. 导入相关类库:如`javax.crypto.Cipher`、`java.security.KeyPairGenerator`等。 2. 选择加密算法:如AES、RSA等。 3. 初始化Cipher对象:根据加密模式(ECB、CBC等)和填充模式...

    IBM JAVA上加密算法的实现用例.rar_Java加密_加密算法

    本案例主要探讨了IBM Java平台上如何实现加密算法,这对于开发人员来说是一个非常实用的技术点。 首先,我们要了解加密的基本概念。加密是将明文(可读数据)转化为密文(不可读数据)的过程,目的是保护信息不被...

    JAVA上加密算法的实现用例.rar

    这个RAR压缩包文件“JAVA上加密算法的实现用例”包含了一个PDF文档,很可能是详细介绍了如何在Java环境中应用各种加密算法的实际案例。虽然没有具体的标签提供额外的信息,但我们可以基于通常的加密算法来探讨相关...

    JAVA源码很强的Java加密解密算法源码

    综上所述,“JAVA源码很强的Java加密解密算法源码”这一主题涵盖了加密解密的基本概念、应用场景以及具体的实现方法等内容。对于Java开发者而言,深入学习这些知识不仅有助于提升自己的技术水平,还能更好地应对实际...

    java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及BASE64 jar和源码

    在压缩包中的"java加密、解密"文件中,很可能包含了实现这些加密解密操作的Java代码示例,包括类、方法和可能的测试用例。通过阅读和学习这些代码,开发者可以更好地理解和应用上述加密算法,同时了解如何在实际项目...

    java 字符串加密解密

    首先,BASE64是一种编码方式,而非真正的加密算法。它将任意二进制数据转化为ASCII字符,便于在网络上传输。在Java中,`java.util.Base64`类提供了便捷的BASE64编码和解码功能,如`Base64.getEncoder()....

    java实现国密sm3算法程序

    - **国密**:即国家商用密码算法,是中国制定的一系列加密算法,包括SM2、SM3、SM4等,旨在保障国内网络安全和信息安全。 - **SM3**:是国密算法中的一种密码哈希函数,可将任意长度的消息映射为固定长度的摘要,...

    Java加密解密工具集 JCT v1.0源码包

    - 加密/解密类:实现了各种加密算法的类,提供简单易用的接口。 - 密钥管理类:用于生成、存储和管理密钥对。 - 工具类:包含了加密相关的辅助方法,如随机数生成、编码转换等。 - 测试用例:为了确保代码的正确性,...

    Java字符串加密实例

    本实例将深入探讨几种常见的加密算法,包括MD5、SHA-1和SHA-256,以及如何在Java中实现它们。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入转化为固定长度的128位(16字节...

    SM2/SM3/SM4国密算法C#实现

    在C#中,通过BouncyCastle库,可以实现SM3算法对任意长度输入消息的处理,产生固定长度的摘要值。为了确保与Java版本的代码兼容,需要确保两个平台上的SM3实现遵循同样的哈希计算流程。 **SM4算法**: SM4是一种...

    javasm2源码-GmSSL-1:这是一个支持国密算法开源的openssl,因为strongswan依赖这个库,所以放在这里,便于下载使用

    加密算法: SM3 (GM/T 0004-2012):具有 256 位摘要长度的加密哈希函数。 SM4 (GM/T 0002-2012):128 位密钥长度和 128 位块大小的分组密码,也称为 SMS4。 SM2(GM/T 0003-2012):椭圆曲线密码方案,包括数字签名...

    Md5的Java实现

    MD5算法的标准规范由RFC 1321文档定义,并提供了一组测试用例来验证实现的正确性。 #### MD5算法的关键特点 1. **唯一性**:对于不同的输入,其输出应该是不同的。 2. **不可逆性**:通过散列值很难推导出原始的...

    cryptopp54.zip

    3. `sharkbox.cpp`:这是一个源代码文件,实现了名为Shark的加密算法。Shark是一种流密码,它通过使用反馈函数和密钥流生成器来实现数据加密。 4. `integer.cpp`:这个文件涉及到大整数操作,是许多加密算法的基础...

    RSA加解密源码及测试代码完整java工程

    RSA算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是目前应用最广泛的公钥加密算法之一。该算法基于大数因子分解的数学难题,即所谓的“RSA挑战”,在当前计算能力下被认为是...

    android MD5加密

    在Android开发中,实现MD5加密主要依赖于Java标准库中的`java.security.MessageDigest`类。下面详细介绍如何在Android应用中使用MD5算法进行数据加密。 #### 三、实现步骤 1. **引入MessageDigest类**: ```java ...

Global site tag (gtag.js) - Google Analytics