Hash函数加密算法(一) | 您所在的位置:网站首页 › 下列哪种算法为hash算法之一 › Hash函数加密算法(一) |
一、使用密码学的目的: 保密性:防止用户的标识或数据被读取。 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 实验室设备网 版权所有 |