Hash函数加密算法(一) 您所在的位置:网站首页 下列哪种算法为hash算法之一 Hash函数加密算法(一)

Hash函数加密算法(一)

#Hash函数加密算法(一)| 来源: 网络整理| 查看: 265

一、使用密码学的目的:

    保密性:防止用户的标识或数据被读取。 l

    身份验证:确保数据发自特定的一方。 

    数据完整性:防止数据被更改。

二、加密算法的分类:

   1、对称加密

       采用对称秘钥的加密系统加密、解密过程均采用同一把秘钥,通信双方必须同时获得这把钥匙进行加密解密操作。

       常见对称加密:DES\3DES\AES

   2、非对称加密

        非对称加密系统采用的加密解密秘钥是不同的,加密的称为公钥,解密的称为私钥。公钥加密私钥解密、私钥签名公钥验证

       常见的非对称算法:RSA\DSA\ECC

    3、哈希函数加密算法

        无需借助任何秘钥,主要用于针对前两者加密过程中需要保护的部分提供完整性、防伪造的支持。

       常见的哈希加密算法:MD5,SHA-1,SHA-2,SHA-256,SHA-X(系列)

 三、哈希算法

1、哈希

   将数据打乱混合,通过散列算法,重新创建一个叫做散列值的指纹,通常用一个短的随机字母和数字组成的字符串表示散列值。 2、哈希算法的特性

   1)单向不可逆

    哈希(Hash)算法是一种单向密码体制,即只有加密过程,没有解密过程。

   2)可重复性

     相同输入经过同一哈希函数得到相同散列值,但并非散列值相同则输入结果相同。

     java中使用equals方法 java中的equals和hashcode方法, java中用hashcode计算散列值,另外使用equals方法进行对比,返回true才能表示该对象为同一对象。

[html] view plain copy String result = new String();  String result2 = new String();  result="12121";  result2="121211";     System.out.println(result.hashCode());     System.out.println(result2.hashCode());          String s="12121";     String ss="12121";     System.out.println(s.equals(ss));     System.out.println(s.hashCode());     System.out.println(ss.hashCode());   返回结果:

[html] view plain copy     46790767      1450513826      true      46790767      46790767   可见,针对同一类型对象,对象值相同,也就是散列函数的输入相同,输出的散列值也相同。对象的引用相同,但如果对象值不同,也就是指向不同的heap空间,计算出不同的散列值。

   3)抗冲突性

    不同的输入数据,经过同一散列函数,产生的散列值一定不相同。相同则产生哈希冲突(详见博主前面的博客更新)。

2、实现一个哈希算法

    哈希算法有多重实现思路和方式,例如加法哈希、位运算哈希、乘法除法哈希等。

    加法哈希是将每个输入循环叠加构成最后的哈希结果,prime 为任意质数

[html] view plain copy     static int additiveHash(String key, int prime)      {      int hash, i;      for (hash = key.length(), i = 0; i 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有