博学谷 > 资讯 > 区块链 > 一篇文章带你了解哈希算法

原创 一篇文章带你了解哈希算法

发布时间:2019-07-11 17:22:23 浏览 3068 来源:博学谷资讯 作者:照照

    哈希算法是什么?哈希算法是现代密码体系中的一个重要组成部分。其实大家比较感兴趣的数字货币,就使用了哈希算法。现在小编用一篇文章带你了解哈希算法。

     

     

    一篇文章带你了解哈希算法

     

     

    一、哈希算法简介

     

    哈希(hash)算法又称为散列算法,通过hash算法,可以将任意长度的信息转换成一个固定长度的二进制数据,我们经常会使用十六进制值来表示转换后的信息。比如,数字123,使用md5的hash算法后,得到十六进制的值:202cb962ac59075b964b07152d234b70

     

    二、哈希算法的特点:

     

    (1)不同的信息,理论上得到的hash值不同,我们称之为“无碰撞”,或者发生“碰撞”的概率非常小。

     

    (2)不可逆,hash算法是单向的,从hash值反向推导出原始信息是很困难的。所以,有些系统中,我们可以使用hash算法对密码进行处理后保存。

     

    三、哈希算法的主要应用:

     

    (1) 数据完整性校验

     

    我们可以将原始数据和经过哈希算法得到数据一块发送给对方,对方收到数据之后,对数据使用相同的哈希算法进行计算,如果得到的哈希值和对方发过来的相同,那么就说明数据没有经过篡改。

     

    (2) 数字签名

     

    一般我们先对原始数据进行hash处理,然后对处理后的数据使用私钥进行加密。将原始数据和加密后数据发送给接收方。接收方使用公钥解密,然后对数据进行hash处理,最后对比,借此实现用户身份的验证。

     

    四、常见哈希算法

     

    1、MD5

     

    MD5在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。

     

    MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128bit位散列值。

     

    2、SHA-1

     

    SHA(Secure Hash Algorithm)安全散列算法是一个密码散列家族,由美国国家安全局(NSA)所设计,也是一种哈希算法。

     

    SHA-1 算法输入以512位数据块为单位处理,产生160比特的消息摘要作为输出。

     

    3、代码

     

    如果我们想使用相关hash算法进行处理,一般不需要自己进行实现,只需要调用java或者第三方提供的代码即可。比如,如果想根据md5算法得到一个字符串的的hash值,代码如下:

     

    public static String md5(String plainText) {

     

    //定义一个字节数组

     

    byte[] secretBytes = null;

     

    try {

     

    // 生成一个MD5计算摘要的对象

     

    MessageDigest md = MessageDigest.getInstance("MD5");

     

    //对字符串进行hash处理

     

    md.update(plainText.getBytes());

     

    //获得hash运算后数据

     

    secretBytes = md.digest();

     

    } catch (NoSuchAlgorithmException e) {

     

    throw new RuntimeException("没有md5这个算法!");

     

    }

     

    //将hash后的数据转换为16进制数字

     

    String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字

     

    // 如果生成数字未满32位,需要前面补0

     

    for (int i = 0; i < 32 - md5code.length(); i++) {

     

    md5code = "0" + md5code;

     

    }

     

    return md5code;

     

    }

     

    总而言之,哈希算法有很多,计算过程也比较复杂,但是大多数情况下,不用自己写代码实现这些算法,只需要调用相关算法库中的方法即可。现在,你了解哈希算法了吗?

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

领取成功
领取失败
上一篇:区块链需要学哪些课程?基础课程介绍 下一篇:区块链开发求职不用愁:golang面试题总结分享

相关推荐 更多

最新文章

扫描二维码,回复"区块链"获取90G资料包

4887铁算结果开奖结果小说