一、使用密码学的目的:

保密性:防止用户的标识或数据被读取。 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 plaincopy
  1. String result = new String();
  2. String result2 = new String();
  3. result="12121";
  4. result2="121211";
  5. System.out.println(result.hashCode());
  6. System.out.println(result2.hashCode());
  7. String s="12121";
  8. String ss="12121";
  9. System.out.println(s.equals(ss));
  10. System.out.println(s.hashCode());
  11. System.out.println(ss.hashCode());

返回结果:

[html] view plaincopy
  1. <span style="white-space:pre">    </span>46790767
  2. <span style="white-space:pre">    </span>1450513826
  3. <span style="white-space:pre">    </span>true
  4. <span style="white-space:pre">    </span>46790767
  5. <span style="white-space:pre">    </span>46790767

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

3)抗冲突性

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

2、实现一个哈希算法

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

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

[html] view plaincopy
  1. <span style="white-space:pre">    </span>static int additiveHash(String key, int prime)
  2. <span style="white-space:pre">    </span>{
  3. <span style="white-space:pre">    </span>int hash, i;
  4. <span style="white-space:pre">    </span>for (hash = key.length(), i = 0; i < key.length(); i++)
  5. <span style="white-space:pre">    </span>hash += key.charAt(i);
  6. <span style="white-space:pre">    </span>return (hash % prime);
  7. <span style="white-space:pre">    </span>}

位运算是采用移位、异或运算来充分混合输入元素

[html] view plaincopy
  1. <span style="white-space:pre">    </span>static int rotatingHash(String key, int prime)
  2. <span style="white-space:pre">    </span>{
  3. <span style="white-space:pre">    </span>int hash, i;
  4. <span style="white-space:pre">    </span>for (hash=key.length(), i=0; i<key.length(); ++i)
  5. <span style="white-space:pre">    </span>hash = (hash<<4)^(hash>>28)^key.charAt(i);
  6. <span style="white-space:pre">    </span>return (hash % prime);
  7. <span style="white-space:pre">    </span>}

四、哈希加密算法

1、哈希加密算法

哈希算法应用于加密学,将加密学领域的哈希算法称为哈希加密算法,常见的如上面提到的MD5,SHA-系列算法,每种哈希加密算法,均通过某种哈希函数进行迭代,将任意长度的消息输入,经过压缩生成“消息摘要”( MessageDigest)。

2、哈希加密算法的过程

预处理(Preprocessing):消息填充、将消息分割成m个处理块、为哈希设置初始化值

哈希计算(HashComputation):将预处理完成的数据生成消息摘要,利用对应的哈希函数、相关常熟生成哈希值(即散列值、摘要信息)。

每种哈希加密算法根据初始化参数生成固定长度的摘要信息,例如SHA-256生成的摘要信息长度为128位。越长安全性越高。

3、应用:

错误校正:在数据的发送方,对将要发送的数据应用散列函数,并将计算的结果同原始数据一同发送。在数据的接收方,同样的散列函数被再一次应用到接收到的数据上,如果两次散列函数计算出来的结果不一致,那么就说明数据在传输的过程中某些地方有错误了。这就叫做冗余校验。

例如在邮件反欺诈技术中的DKIM,邮件  body 信息使用 simple/relaxed 散列函数计算出 bh 值,同原数据一同发送。数据接收方使用同样的 simple/relaxed 散列函数再一次对接收到的数据进行散列计算,对比两次散列计算的结果是否一致。一致则保证邮件在传输过程中未被篡改,确保消息的完整性。

Hash函数加密算法(一)相关推荐

  1. 认知理论与技术(hash函数,SHA,MD

    概述: 认证是个过程,通过这个过程一个实体向另一个实体证明某种声称的属性 认证参数: "口令"相当于平时登录系统时输入的密码. "密钥"相当于公钥密码体制中的私 ...

  2. 常见的hash函数算法

    散列表,它是基于快速存取的角度设计的,也是一种典型的"空间换时间"的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Has ...

  3. 信息安全概论:Hash函数概念与性质

    信息安全除了要保障信息的机密性外,还要保障信息在存储.使用.传输过程中不被非法篡改,即信息的完整性. Hash函数可以将"任意长度"的输入经过变换以后得到固定长度的输出,也称为消息 ...

  4. 信息摘要函数(Hash函数)的设计与性质验证

    1.信息摘要函数(Hash函数)的设计与性质验证实验 2.实验目的:信息摘要函数(Hash函数)的设计与性质验证. 2.1实验设备:PC机 一台/人 2.2实验原理: 2.2.1.信息摘要函数具有固定 ...

  5. [现代密码学] Crypto 知识点总结(古典密码对称加密hash函数)

    文章目录 一 . 常见加解密 SM1-4 二. 古典密码 代换密码 置换密码 Hill密码 转轮密码 代换密码的唯密文攻击 例题 例题 三. 对称加密算法 分组密码 DES算法(数据加密标准) 1. ...

  6. Hash函数的安全性

    我们为了保证消息的完整性,引进了散列函数,那么散列函数会对安全正造成什么影响呢?这是需要好好研究一番的问题. 三个概念: 1.如果y<>x,且h(x)=h(y),则称为碰撞. 2.对于给定 ...

  7. Hash 函数资源链接汇总

    Hash 链接: [1]General Purpose Hash Function Algorithms:http://www.partow.net/programming/hashfunctions ...

  8. HashMap中的hash函数

    在写一个HashSet时候有个需求,是判断HashSet中是否已经存在对象,存在则取出,不存在则add添加.HashSet也是通过HashMap实现,只用了HashMap的key,value都存储一个 ...

  9. 文本去重之MinHash算法——就是多个hash函数对items计算特征值,然后取最小的计算相似度...

    来源:http://my.oschina.net/pathenon/blog/65210 1.概述 跟SimHash一样,MinHash也是LSH的一种,可以用来快速估算两个集合的相似度.MinHas ...

  10. Cuckoo hash算法分析——其根本思想和bloom filter一致 增加hash函数来解决碰撞 节省了空间但代价是查找次数增加...

    基本思想: cuckoo hash是一种解决hash冲突的方法,其目的是使用简单的hash 函数来提高hash table的利用率,同时保证O(1)的查询时间 基本思想是使用2个hash函数来处理碰撞 ...

最新文章

  1. 问价已损坏 文件服务器,由于检查点文件 (.chk) 丢失或已损坏,无法打开数据库...
  2. java gmail smtp_通过JAVA中的Gmail SMTP服务器发送电子邮件
  3. C语言自学《四》---- 循 环
  4. Centos6 安装RabbitMq3.7.7
  5. 业界萌新对斯坦纳树的小结
  6. mysql异机备份_RMAN异机恢复备份集权限问题
  7. 《大道至简》阅读笔记02
  8. 大数据分析平台有哪些功能
  9. 14. Controller
  10. app上传遇到的一些问题
  11. Spring 注解实现原理
  12. 什么是spurious wakeups(虚假唤醒)
  13. 服务器电源ic芯片,8种常见电源管理IC芯片介绍
  14. java 计算农历_java计算农历日期
  15. 参考文献起止页码怎么写_参考文献是图书,怎么标注页码啊,用到哪页就写哪页吗(⊙_⊙?)...
  16. 应付模块的R12 TRACE 和 FND Debug 文件 / FND 日志 调试
  17. 接收机的指标-噪声、灵敏度、动态范围
  18. 【无线通信协议笔记】蓝牙篇:BLE HID协议
  19. PSM712静电保护二极管,RS-485端口防护神器
  20. 常州php学校排名,常州重点中学初中排名2019,常州重点初中学校名单及排行榜

热门文章

  1. 再谈new functionName
  2. LINQ 花3个礼拜的时间来弄清楚
  3. Codeforces Round #573 (Div. 2) C. Tokitsukaze and Discard Items
  4. js基础练习:实现资料查找
  5. 随机生成大小为100的范围是100-1000的不重复的数组
  6. C#复习(学生信息输入)
  7. 前端学习 第二弹: JavaScript中的一些函数与对象(1)
  8. request.getRequestDispatcher(url).forward(request, response)
  9. LNMP 常见问题(FAQ)
  10. NoiseAsh Rule Tec All Collection for Mac(无源均衡器)