设为首页 加入收藏

TOP

哈希与加密(一)
2015-07-24 10:44:35 来源: 作者: 【 】 浏览:1
Tags:哈希 加密

1、哈希与加密的区别

(1)哈希:将目标文本转换成具有相同长度、不可逆的杂凑字符串(或称消息摘要);

(2)加密:将目标文本转换成具有不同长度、可逆的密文。

实际上,使用相同的hash算法,不论目标文本有多长,得到的结果长度固定;加密算法往往与目标文本的长度成正比。

2、哈希与加密的数学基础

(1)哈希算法:R=H(S)是多对一映射,多个不同的S可以通过哈希算法H得到相同的R。所以就不存在一个逆映射,使得一个R能得到唯一的S.

一个设计良好的hash算法很难从哈希结果中找到目标文本的碰撞,另外,好的哈希算法对于目标文本的改变极其敏感。

何为碰撞?对于hash算法H,如果S1不等于S2,但是H(S1)等于H(S2),则称S1与S2互为碰撞。

(2)加密算法:R=E(S,Ke)是一对一映射,一个S结合加密密钥Ke,仅能得到唯一的密文R。反之,一个R结合解密密钥Kd也仅能得到唯一的S。

一个设计良好的加密算法应该是一个“单向陷门函数”,单向陷门函数的特点:即使知道函数本身也很难由函数的值求得其对应的自变量。可是一旦知道了陷门,自变量就很容易计算出来。

简单的说,好的加密算法应该是很难从密文求得明文的,但是如果一旦密钥被知道了,就很容易由密文求得明文。

在加密算法防攻击这块,往往假设攻击者知道加密算法和密文,所以我们应该对明文和密钥进行保护。

3、哈希与加密在软件中的应用

(1)哈希和加密在软件开发中最常见的应用是数据保护。

为了实现数据保护,选择哈希or加密的基本原则:

如果被保护的数据仅用做比较验证,以后不需要还原成明文,使用哈希;

如果被保护的数据需要还原成明文,使用加密;

如果你忘记密码,网站让你输入新的密码,则用的应该是哈希;

如果你忘记密码,网站发给你原密码,则用的应该是加密;

(2)使用简单的一次哈希进行数据保护:

\

\

如上图,对注册进来的口令进行哈希算法的映射,将得到的杂凑字符串存入数据库;对每次登录的口令进行哈希算法的映射,将得到的杂凑字符串和数据库里的注册口令杂凑字符串比较,有相同的,则登录成功。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongodb数据库备份 下一篇JDBC编程小结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)