package amazon.webservices.common;
import java.security.SignatureException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
/**
* This class defines common routines for generating
* authentication signatures for AWS requests.
*/
public class Signature {
private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
/**
* Computes RFC 2104-compliant HMAC signature.
* * @param data
* The data to be signed.
* @param key
* The signing key.
* @return
* The Base64-encoded RFC 2104-compliant HMAC signature.
* @throws
* java.security.SignatureException when signature generation fails
*/
public static String calculateRFC2104HMAC(String data, String key)
throws java.security.SignatureException
{
String result;
try {
// get an hmac_sha1 key from the raw key bytes
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
// get an hmac_sha1 Mac instance and initialize with the signing key
Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
mac.init(signingKey);
// compute the hmac on input data bytes
byte[] rawHmac = mac.doFinal(data.getBytes());
// base64-encode the hmac
result = Encoding.EncodeBase64(rawHmac);
} catch (Exception e) {
throw new SignatureException("Failed to generate HMAC : " + e.getMessage());
}
return result;
}
}
分享到:
相关推荐
### HMAC-SHA1算法知识点详解 #### 一、HMAC-SHA1算法概述 HMAC-SHA1(Hash-based Message Authentication Code using SHA1)是一种基于加密哈希函数和共享密钥的消息认证协议。该协议利用了SHA1哈希算法的强大...
HMAC-SHA1是一种基于密钥的哈希消息认证码(Hash-based Message Authentication Code)算法,它是结合了哈希函数(SHA1)和密钥的一种安全机制,主要用于验证数据的完整性和来源的真实性。在网络安全、数据加密和...
HMAC-SHA1算法是一种基于密钥的哈希消息认证码(Hash-based Message Authentication Code)算法,它结合了哈希函数SHA1(Secure Hash Algorithm 1)和密钥,用于验证数据的完整性和来源的可靠性。在VC++环境中,将...
HMAC-SHA1是一种基于密钥的哈希消息认证码(Hash-based ...由于SHA1的安全性在近年来受到一定挑战,现代系统更倾向于使用更强的哈希函数如SHA-256。不过,HMAC-SHA1仍然是理解密码学中消息认证码概念的一个重要实例。
HMAC-SHA1是其中的一个变种,使用SHA-1散列函数。SHA-1是一种广泛使用的密码学安全散列函数,能够将任意长度的数据转化为固定长度的散列值,通常用于数字签名和消息完整性检查。 在Delphi7中,如果找不到现成的HMAC...
不过,现代应用通常会转向更安全的哈希算法,如SHA-256或更强的版本。 8. **错误处理**:在JavaScript实现中,可能包含对无效密钥、空消息或哈希计算失败的错误处理机制,以确保代码的健壮性。 9. **性能优化**:...
本项目提供了C语言实现的HMAC-SHA256和HMAC-SHA1加密算法,适用于VC2008开发环境。 首先,让我们深入理解HMAC-SHA256和HMAC-SHA1。HMAC是一种基于哈希函数的消息认证码,它结合了密钥和数据来生成一个固定长度的...
HMAC-SHA1算法签名就是一种常见的安全措施,用于验证数据的完整性和发送者的身份。在这个场景下,我们讨论的是如何使用C#语言实现HMAC-SHA1算法进行签名,这通常涉及到SDK的开发和鉴权过程。 HMAC(Hash-based ...
C语言版的实现HMAC-SHA1和base64编码,已经对C++做了兼容处理,在VS下运行main.c代码,可以得到经过HMAC-SHA1处理后的结果,并且可以运行里面的base64编码函数得到想要的结果,可以用于连接阿里云MQTT
标题中的“HMAC-SHA1/SHA256/MD5标准dll”指的是一个动态链接库(DLL)文件,该文件包含了实现哈希消息认证码(HMAC)算法的函数,这些算法包括SHA-1、SHA-256以及MD5。DLL文件是一种在Windows操作系统中广泛使用的...
HMAC是哈希运算消息认证码 (Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息...HMAC-SHA1签名算法是一种常用的签名算法,用于对一段信息进行生成签名摘要。
标题中的"hmac_sha1_test.rar"表明这是一个关于HMAC-SHA1算法的测试资源包,其中"HAMC-HAMC-SHA1"可能是标题输入时的误拼,实际应为"HMAC-HMAC-SHA1"。HMAC(Hash-based Message Authentication Code)是一种基于...
标题中的"hmac.rar_HMAC-MD5_hmac_hmac-sha1"暗示了这个压缩包包含与HMAC(Hash-based Message Authentication Code)相关的代码或资料,特别是关于HMAC-MD5和HMAC-SHA1这两种特定的哈希消息认证码算法。HMAC是一种...
标题中的"hmac_sha1.tar.gz"表明这是一个使用gzip压缩的tar归档文件,其中包含了与HMAC-SHA1算法相关的源代码。HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的安全机制,用于验证数据的完整性...
2. **SHA1**:SHA-1是SHA(Secure Hash Algorithm)家族的一员,是一种广泛使用的安全哈希算法,能够将任意长度的数据转换为固定长度的160位(20字节)的哈希值。尽管SHA1的安全性已不复当年,但在某些场景下仍然...
HMAC-SHA256是基于SHA-256哈希函数的HMAC版本,SHA-256是SHA-2家族的一部分,能够产生256位的散列值。HMAC设计的核心在于它可以抵御长度扩展攻击,这是因为攻击者无法仅凭已知的HMAC值推算出原始消息的扩展部分。 *...
HMAC-SHA-1是一种基于哈希函数的密钥关联消息认证码(Hash-based Message Authentication Code)算法,它结合了密钥和哈希函数来确保数据的完整性和来源的可靠性。在信息安全领域,HMAC-SHA-1常用于验证数据的完整性...
SHA1在安全领域广泛应用于数字签名、文件校验等场景,但因其安全性在近年来逐渐被SHA-256等更安全的算法替代。 HMAC-SHA1是HMAC算法的一个实例,它结合了SHA1哈希函数和密钥操作。HMAC的基本思想是将密钥和消息一起...
Hmac-sha1算法是一种基于密钥的哈希消息认证码...然而,需要注意的是,由于SHA1的安全性在近年来受到质疑,已被更安全的哈希函数如SHA-256所取代,因此在新的项目中,建议使用HMAC-SHA256或其他更安全的HMAC版本。