加密方法以及原理笔记

来源:互联网 发布:ubuntu 14.04 源 2016 编辑:程序博客网 时间:2024/06/06 00:04


所有的加密算法都是基于二进制进行加密!!


为什么要加密:

1.不允许在网络上明文的传递用户稳私;

2.本地不允许明文的保存用户的稳私。


服务器要不要保存用户明文密码:

把密码明文保存在服务器本身就一种不安全的行为,保存加密后的密码就行了,当然这样也会带来个不好的结果,那就是用户忘记密码后,无法找回密码(因为服务器也不知道原密码是什么),只能重置密码!!!


最常见的是md5加密,简单的md5加密能保证安全不:

有一个神奇的网站,www.cmd5.com  这网站可以反编绎md5密码(暴力破解),可以破解一些简单的加密

md5虽然不可逆,但同样的数据,加密后都是不会变的,所以直接用md5加密是不安全的



早期的解决方案--加固定盐!!

盐:足够的长足够复杂的固定字符串

原密码拼接盐字符串再md5加密

开发者自己知道盐:(不安全撒,非技术问题)

盐一旦定义不好改



目前比较流行的一种加密解决方案---HMAC

使用一个密钥,对明文加密,并且做两次散列(哈希)

在真实的开发中,我们这个key是从服务器获取的!!!

流程:手机和服务器都保存key

换手机登录时,判断本地有没有key,没有就找服务器要key

有可能找服务器要key不给的,比如qq的设备锁(要找原设备确认)



此时还存在一个漏洞:黑客可以获取加密后的密码,进行登录

解决办法:

HMAC加密后,拼接当前年月日时分,加进行一次MD5加密

此时服务器也用HMAC加密后的密码拼接当前年月日时分,然后比较,如果失败可以减一分钟,再比较。此时黑客拦截到密码后,最多只有120s的时间,进行登录

本地时间可能存在不准的情况,最好用服务器时间。




md5:杂谈

md5可以区分视频图片正版盗版

两个文件复制的md5值是一样的,截剪的是不一样的


拆词搜索:核心---词语对比

a:百度-阿里-腾讯

b:阿里-腾讯-百度

在终端中md5词语  md5 -s ***

将各个词md5,然后接位相加,a 和 b的结果是一样的。




钥匙串访问:开SSKeychain 

用于保存密码等隐私信息

<跨沙盒!!存在系统里面,在沙盒中是找不到的>

如果我们存了一个密码,然后用户删除了APP,再下载APP,密码还在

采用原理:AES加密

第三方工具:KeyChain Sharing





高级加密算法的运用(高级程序员的话题)



密码学:军事!!!



哈希算法-信息摘要

得到的数据只是原数据的一部分,所以不可逆

MD5

SHA1

SHA256/512

HMAC

散列碰撞:破解哈希 --找出两个不同的数据,然后加密之后得到相同的结果!!

两个数据加密后得到一个值的可能是有的,个数也是无限多的。

因为加密后的数据是32位,是有限的,而被加密的数据种类是无限的。

但是计算量也是无限大的。





以下两种加密算法都是能够反算的!!!

对称加密算法:传统加密算法key

*明文—->加密 ——>密文

*密文—->解密——>明文





非对称加密算法(RSA):现代加密算法

*公钥 ——私钥

*用公钥加密,用私钥解密

*用私钥加密,用公钥解密

用公钥加密后,连拥有公钥本身的人都不能解密








暴力破解DES,超级计算机50

暴力破解AES,大概几千w年吧



















阅读全文
0 0
原创粉丝点击