SHA算法,即安全散列算法(Secure Hash Algorithm)是一种与MD5同源的数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用. 1.概述 SHA算法能计算出一个数位信息所对应到的,长度固定的字串,又称信息摘要.而且如果输入信息有任何的不同,输出的对应摘要不同的机率非常高.因此SHA算法也是FIPS所认证的五种安全杂凑算法之一.原因有两点:一是由信息摘要反推原输入信息,从计算理论上来说是极为困难的:二是,想要找到两组不…
MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMAC算法. 1.HMAC概述 HMAC算法首先它是基于信息摘要算法的.目前主要集合了MD和SHA两大系列消息摘要算法.其中MD系列的算法有HmacMD2.HmacMD4.HmacMD5三种算法:SHA系列的算法有HmacSHA1.HmacSHA224.HmacSHA256.HmacSHA384.HmacSHA5…
前面一篇中我们分析了SHA的原理,并且以SHA1为例实现了相关的算法,在这一片中我们将进一步分析SHA2并实现之. 1.SHA简述 前面的篇章中我们已经说明过,SHA实际包括有一系列算法,分别是SHA-1.SHA-224.SHA-256.SHA-384以及SHA-512.而我们所说的SHA2实际是对后面4中的统称.各种SHA算法的数据比较如下表,其中的长度单位均为位: 从上表中我们不难发现,SHA-224和SHA-256.SHA-384和SHA-512在消息长度.分组长度.计算字长以及计算步骤各…
前面一篇中我们分析了SHA256的原理,并且实现了该算法,在这一篇中我们将进一步分析SHA512并实现之. 1.SHA简述 尽管在前面的篇章中我们介绍过SHA算法,但出于阐述的完整性我依然要简单的说明一下SHA算法.SHA主要有SHA-1.SHA-224.SHA-256.SHA-384以及SHA-512.各种SHA算法的数据比较如下表,其中的长度单位均为位: 从上表中我们不难发现,SHA-224和SHA-256.SHA-384和SHA-512在消息长度.分组长度.计算字长以及计算步骤各方面分别都…
HKDF是一种特定的键衍生函数(KDF),即初始键控材料的功能,KDF从其中派生出一个或多个密码强大的密钥.在此我们想要描述的是基于HMAC的HKDF. 1.HKDF概述 密钥派生函数(KDF)是密码系统的基本组成部分.它的目标是获取一些初始的密钥材料,并从中派生出一个或多个安全强度很大的密钥. 我们将要介绍的是基于HMAC的KDF,称之为HKDF,它可以应用于各种协议和应用程序的构建.HKDF在逻辑上由两个部分组成.第一个部分采用输入密钥材料和“提取”,它是一个固定长度的伪随机密钥K.第二部分…
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. 1.MD5算法简介 MD5在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个…
package com.xgh.message.digest.test; import java.math.BigInteger; import java.security.MessageDigest; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.Secret…
OpenSSL实现了5种信息摘要算法,分别是MD2.MD5.MDC2.SHA(SHA1)和RIPEMD.SHA算法事实上包括了SHA和SHA1两种信息摘要算法.此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1.…
20145204&20145212信息安全系统实验二 链接…
1 什么是MD5 信息摘要算法,可以将字符进行加密,每个加密对象在进行加密后都是等长的 应用场景:将用户密码经过MD5加密后再存储到数据库中,这样即使是超级管理员也没有能力知道用户的具体密码是多少:因为MD5加密后的数据时不能够被解密的 步骤: >获取MessageDigest对象 MessageDigest md5 = MessageDigest.getInstance("MD5"); 注意:import java.security.MessageDigest; >通过M…