密码学
文章平均质量分 80
逍遥剑臣
这个作者很懒,什么都没留下…
展开
-
【密码学】MD5原理与java实现
一、概述1.概念 MD5即Message Digest Algorithm 5(中文名为消息摘要算法第五版),是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),用以提供消息的完整性保护。主要是通过特定的hash方法将文本信息转换成简短的信息摘要,压缩+加密+hash算法的结合体,是绝对不可逆的。2.特征(1)压缩性:任意长度输入,得到固定长度输出(一般取128bit)。 ...转载 2018-05-09 13:23:43 · 2840 阅读 · 8 评论 -
【密码学】base64编码和解码
1.定义8bit二进制字节码与base64字符转换2.base64表索引对应字符索引对应字符索引对应字符索引对应字符0A17R34i51z1B18S35j5202C19T36k5313D20U37l5424E21V38m5535F22W39n5646G23X40o5757H24Y41p5868I25Z42q5979J26a43r60810K27b44s61911L28c45t62+12M29d46...原创 2018-05-03 11:26:42 · 870 阅读 · 0 评论 -
【密码学】轻松理解“加盐”的原理与java实现
上一篇博客中说到防御彩虹表攻击最常用的方法就是加盐,那么什么是加盐呢?一、什么是加盐?1.背景现在很多公司后台以hash值形式存储用户密码(虽然本文以MD5哈希函数为例,但becrypt函数最常用的),用于哈希函数存在碰撞的特性,当后台数据库被攻击然后获取到用户密码哈希值时,还是能通过一定的方法(比如彩虹表攻击)破解用户密码。举个例子:http://...原创 2018-05-11 18:00:06 · 34752 阅读 · 7 评论 -
【密码学】彩虹表
以前和很多人一样,对彩虹表的理解是片面的:以为彩虹表是一个大的“明文->密文”的映射表。按照这个理解(也就是暴力破解)某个哈希函数的彩虹表的容量是超大超大的,即使对明文做了分类。 今天看了一下上面链接的那个帖子后,对彩虹表有了更确切的理解。彩虹表(Rainbow table)所谓的time-memory trade-off,并不是简单地“以空间换时间”,而是双向...转载 2018-05-11 21:18:40 · 6240 阅读 · 0 评论 -
【密码学】BCrypt算法java实现
一、概述 你会用什么样的算法来为你的用户保存密码?如果你还在用明码的话,那么一旦你的网站被hack了,那么你所有的用户口令都会被泄露了,这意味着,你的系统或是网站就此完蛋了。所以,我们需要通过一些不可逆的算法来保存用户的密码。比如:MD5, SHA1, SHA256, SHA512, SHA-3,等Hash算法。这些算法都是不可逆的。系统在验证用户的口令时,需要把Hash加密过后的口...转载 2018-05-07 22:25:38 · 3220 阅读 · 0 评论 -
【密码学】哈希函数-SHA
一、哈希函数1.定义:Hash函数将长度可变的数据块M作为输入,产生固定长度的Hash值h=H(M)。2.特征:(1)可变长度输入,固定长度输出;(2)不可逆;(3)小概率发生碰撞,只能减少碰撞概率,无法避免碰撞;3.应用:(1)消息认证;(2)数字签名;(3)登陆认证;(4)入侵检测和病毒检测;(5)构建伪随机函数和作为伪随机数发生器;4.密码...原创 2018-05-24 21:44:13 · 6502 阅读 · 4 评论