Java中常用的四种加密算法(base/md/sha/hmac)以及保护算法密钥的方法
简单的java加密算法有:
- BASE 严格来说,这是一种编码格式,而不是加密。算法
- MD(消息摘要算法,消息摘要算法)
- SHA(安全散列算法,安全散列算法)
- HMAC(提取的消息验证码,散列消息验证码1)。 BASE
Base 是互联网上传输位字节代码最常见的编码方法之一。你可以查看RFC~RFC,里面有MIME的详细规范。基本编码可用于在 HTTP 环境中传输较长的标识信息。例如,在 Hibernate Java Persistence 中,Base 将长唯一标识符(通常为 1 位 UUID)编码为字符串,该字符串用作 HTTP 表单和 HTTP GET URL 中的参数。在其他应用程序中,通常需要将二进制数据编码为适合放置在 URL 中的表单(包括隐藏表单字段)。目前,基本编码是不可读的,即编码数据不会被肉眼直接看到。 (来源:百度百科)
java实现代码:


2. MD
MD是一种消息摘要算法(Message-Digest Algorithm),用于保证信息传输的完整一致。它是计算机中广泛使用的哈希算法之一(又译为摘要算法、散列算法)。 MD通常已在主流编程语言中实现。哈希算法的基本原理是将数据(例如汉字)计算成其他固定长度的值。 MD的前身是MD、MD、MD。广泛应用于加密解密技术,常用于验证文件。证书?无论文件有多大,MD后都可以生成唯一的MD值。例如,当前的ISO校准是MD校准。如何使用?当然,MD值是经过ISO MD之后创建的。通常,下载了linux ISO的朋友会在下载链接旁边看到MD字符串。它用于检查文件的一致性。
Java实现:


MD算法具有以下特点:
- 可压缩性:对于任意长度的数据,计算出的MD值的长度是固定的。
- 易于计算:可以根据原始数据轻松计算MD值。
- 抗修改性:如果对原始数据进行任何更改,即使只更改单个字节,得到的MD值也会有很大不同。
- 防碰撞性弱:已知原始数据及其MD值,很难找到MD值相同的数据(即假数据)。
- 抗碰撞性强:很难找到两个不同的数据具有相同的MD值。
MD的作用是在用数字签名软件对私钥进行签名之前,让大容量的信息被“压缩”成保密的格式(即将任意长度的字节串转换为给定的十六进制数的字符串)长度)。除了MD之外,比较出名的还有sha-、RIPEMD和哈弗。
安全哈希算法主要适用于数字签名标准DSS中定义的数字签名算法。对于短于 ^ 位的消息,SHA 会创建一位消息摘要。该算法经过加密专家多年来的开发和改进,已经越来越完善并得到广泛应用。该算法背后的想法是获取一段明文,然后不可逆地将其转换为(通常较小的)密文。它也可以简单地认为是采用一串输入代码(称为预映射或信息)并将它们转换为称为哈希值(也称为哈希值)的短长度、固定数字输出序列的过程。信息摘要或信息认证码)。哈希函数的值可以说是明文的“指纹”或“摘录”,因此哈希值的数字签名可以认为是明文的数字签名。
Java 实现:

SHA 和 MD 的比较:
- 由于两者都源自 MD,因此 SHA 和 MD 非常相似。因此,它们的优点和其他功能相似,但有几个区别:
- 针对暴力破解的安全性:最显着和最重要的区别是 SHA 哈希比 MD 哈希更长。使用暴力技术,生成散列与给定消息散列匹配的消息的难度对于MD来说是一个数量级的操作,对于SHA来说是一个数量级的操作。因此,SHA 具有更强的抵抗暴力攻击的能力。
- 针对密码分析的安全性:由于 MD 的设计容易受到密码攻击,因此 SHA- 似乎不太容易受到此类攻击。
- 速度:在相同硬件上,SHA 的运行速度比 MD 慢。
4.HMAC
HMAC(Hash Message Authentication Code,哈希消息认证码,基于Hash算法的密钥认证协议。消息认证码的原理是利用公共函数和密钥来实现认证,一个固定的A长度值用作认证标识符,该标识符用于认证消息的完整性。密钥用于生成一个固定大小的小数据块(MAC),将其添加到消息中然后进行传输。接收方使用与发送方共享的密钥进行身份验证和授权。
Java实现代码:

在实际使用加解密算法时,应该更多地考虑加解密密钥的安全性。如果加解密密钥存储在生命周期管理工具中,即使黑客获得了密文,加解密算法也无法解密数据。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
