您现在的位置是:首页 > 文章详情

【Java小工匠聊密码学】--消息摘要--RIPEMD算法

日期:2018-06-28点击:480

1、什么是RIPEMD

RIPEMD(RACE Integrity Primitives Evaluation Message Digest,RACE原始完整性校验消息摘要,是Hans Dobbertin等3人在md4,md5的基础上,于1996年提出来的。算法共有4个标准128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。不过,让人难以致信的是RIPEMD的设计者们根本就没有真正设计256和320位这2种标准,他们只是在128位和160位的基础上,修改了初始参数和s-box来达到输出为256和320位的目的。所以,256位的强度和128相当,而320位的强度和160位相当。RIPEMD建立在md的基础之上,所以,其添加数据的方式和md5完全一样。

2、RIPEMD 应用案例

比特币在生成地址算法中,使用了该算法。

3、RIPEMD算法实现

package lzf.cipher.bc; import java.nio.charset.Charset; import org.bouncycastle.crypto.Digest; import org.bouncycastle.crypto.digests.RIPEMD128Digest; import org.bouncycastle.crypto.digests.RIPEMD160Digest; import org.bouncycastle.crypto.digests.RIPEMD256Digest; import org.bouncycastle.crypto.digests.RIPEMD320Digest; import org.bouncycastle.util.encoders.Hex; /** * @author Java小工匠 */ public class BCRIPEMDUtils { public static String ripemd128(byte[] bytes) { Digest digest = new RIPEMD128Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static String ripemd160(byte[] bytes) { Digest digest = new RIPEMD160Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static String ripemd256(byte[] bytes) { Digest digest = new RIPEMD256Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static String ripemd320(byte[] bytes) { Digest digest = new RIPEMD320Digest(); digest.update(bytes, 0, bytes.length); byte[] rsData = new byte[digest.getDigestSize()]; digest.doFinal(rsData, 0); return Hex.toHexString(rsData); } public static void main(String[] args) { byte[] bytes = "java小工匠".getBytes(Charset.forName("UTF-8")); String ripemd128 = ripemd128(bytes); System.out.println("ripemd128:" + ripemd128 + ",lengh=" + ripemd128.length()); String ripemd160 = ripemd160(bytes); System.out.println("ripemd160:" + ripemd160 + ",lengh=" + ripemd160.length()); String ripemd256 = ripemd256(bytes); System.out.println("ripemd256:" + ripemd256 + ",lengh=" + ripemd256.length()); String ripemd320 = ripemd320(bytes); System.out.println("ripemd320:" + ripemd320 + ",lengh=" + ripemd320.length()); } } 

如果读完觉得有收获的话,欢迎点赞、关注、加公众号【小工匠技术圈】

个人公众号,欢迎关注,查阅更多精彩历史!

image
原文链接:https://yq.aliyun.com/articles/605509
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章