MD5

MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”效果:对输入信息生成唯一的128位散列值(32个字符
1.MD5的特点
不可逆
1.对不同的数据进行加密,得到的结果是定长的,MD5对不同的数据进行加密,得到的结果都是32个字符。
2.根据输出值,不能得到原始的明文,即其过程不可逆。
3.算法具有较好的安全性,而且免费。
4.广泛使用主要运用在数字签名、文件完整性验证以及口令加密等方面
2.用途
1.口令加密
2.搜索:将几个关键字分别md5,在搜索这几个关键字的时候,不管顺序怎么样,还是会得到大致相同的搜素结果。其实就是将这几个关键字的md5值作一些特殊处理,比如相加。
3.版权: 不同的数据 MD5 是不一样的,比如一个视频资源,放到服务器上的时候,会将md5值也放上去保存。如果是盗版的,md5值是不一样的。
4.不止这些用途。
3.破解
虽然说MD5加密本身是不可逆的,但并不是不可破译的,网上有关MD5解密的网站很多,破解机制采用穷举法,也就是把所有可能结果进行一个一个检验。(穷试,撞库)
4.如何更加安全
1.加盐(salt)
在明文的固定位置插入随机串,然后再进行MD5,
如果盐是固定的,盐有很多人知道(服务器,前端,客户端),会被泄漏,不安全.
2.对字符串多次MD5加密
3.先加密,后乱序
4.HMAC
安全级别更高,破解难度高。
但还是有风险:每次结果一致,有可能被暴力破解。
黑客模拟网络请求,不需要真实密码,也可以获取登陆权限。
5.生成带时间戳的密码
客户端注册时输入账号和原始密码,服务器会返回一个key给客户端
服务器将账号,key,以及hmac后的密码(EncryptPass)保存在数据库
客户端拿到key后,会将原始密码结合key进行一次hmac运算,生成一个加密后的密码(EncryptPass),加密后的密码再结合当前时间(这个时间要从服务器获取)再做一次md5,生成新的加密密码(finalPass)
客户端结合时间生产密码后,会发送请求和服务器上的密码作比较(服务器会用EncryptPass结合服务器当前时间,或者当前时间前一分钟,生产服务器的finalPass,如果这两个时间相同,就登陆成功)
这样根据时间来做,就算暴力破解或者模拟登陆,已经过了时效了,密码早已经变了。

Base64

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其实Base64只能算是一个编码算法,对数据内容进行编码来适合传输。
标准Base64编码解码无需额外信息即完全可逆,即使你自己自定义字符集设计一种类Base64的编码方式用于数据加密,在多数场景下也较容易破解。
Base64编码本质上是一种将二进制数据转成文本数据的方案。对于非二进制数据,是先将其转换成二进制形式,然后每连续6比特(2的6次方=64)计算其十进制值,根据该值在A--Z,a--z,0--9,+,/ 这64个字符中找到对应的字符,最终得到一个文本字符串。

1.标准Base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
2.Base64是把3个字节变成4个可打印字符,所以Base64编码后的字符串一定能被4整除(不算用作后缀的等号);
3.等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,Base64要在后面添加\0凑齐3n位。为了正确还原,添加了几个\0就加上几个等号。显然添加等号的数目只能是0、1或2;
4.严格来说Base64不能算是一种加密,只能说是编码转换。

对称加密

对称加密有两种加密方式: ECB和CBC
1.介绍
加密和解密使用同一个"密钥",密钥的保密工作就非常的重要,密钥会定期更换
2.经典算法
DES 数据加密标准(用的比较少,因为强度不够)。
3DES 使用3个密钥,对相同的数据执行三次加密,强度增强。
AES 高级加密标准,钥匙串访问就是使用AES加密)
3.ECB: 电子代码本
就是将一个数据拆分为多块,然后独立加密
4.CBC: 密码块链
使用一个密钥和一个初始化"向量"对数据执行加密转换,能保证密文的完整性,如果一个数据发生改变,后面所有的数据将会被破坏
向量:某个方向的数量.
现代的密码学都和几何有关!因为几何(包含圆形\椭圆\球体)的变量是有规律的,但是结果是多变的

非对称加密(RSA)

典型的如RSA,AES等,常见方法,使用openssl ,keytools等工具生成一对公私钥对,使用被公钥加密的数据可以使用私钥来解密,反之亦然(被私钥加密的数据也可以被公钥解密) 。在实际使用中私钥一般保存在发布者手中,是私有的不对外公开的,只将公钥对外公布,就能实现只有私钥的持有者才能将数据解密的方法。
这种加密方式安全系数很高,因为它不用将解密的密钥进行传递,从而没有密钥在传递过程中被截获的风险,而破解密文几乎又是不可能的,但是算法的效率低,所以常用于很重要数据的加密,常和对称配合使用,使用非对称加密的密钥去加密对称加密的密钥。

1.RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。
RSA的安全性依赖于大数分解,小于1024位的N已经被证明是不安全的,而且由于RSA算法进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,这是RSA最大的缺陷,因此通常只能用于加密少量数据或者加密密钥,但RSA仍然不失为一种高强度的算法。

欢迎大家指正与讨论。

加密方式(包括MD5 base64 对称加密 非对称加密简介)相关推荐

  1. 写给小白的常见三种加密方式:MD5,对称非对称加密

    我们在做数据类传输产品或测试的过程中,总会听到开发说数据要加密,然后使用各种加密方式,那么希望通过本文,能够让大家对一些常见的加密方式有一些更加深入的了解,理解其中的底层逻辑. 今天介绍三种常见的加密 ...

  2. (二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!

    引言 在上篇文章中,已经讲明了当下计算机网络的基础知识,其中对网络体系结构.分层模型.TCP/IP协议簇.....等多方面内容进行了阐述,而在本章会分析到网络知识中另外两个大名鼎鼎的协议:HTTP/H ...

  3. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  4. Linux加密和安全篇(一)gpg、对称和非对称加密、哈希算法

    对于linux运维工作者而言,加密技术已经很早就用于数据的存储和数据之间的交换.我们可以会为了防止你的网站.服务器或者系统,我们会使用一些手段来防止一些恶意的攻击或者访问.一下就对linux的安全和加 ...

  5. python2 md5加密_Python的加密方式:MD5加密

    Python的加密方式:MD5加密 1.MD5加密 MD5加密是常用的一种加密方式,不可逆,在日常的字符串加密,请求报文加密中经常用到. Python使用MD5加密使用的是Python自带的模块has ...

  6. Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)

    文章目录 1. AES算法 1.1 AES加密过程 1.1.1 字节代替(SubBytes) 1.1.2 行移位(ShiftRows) 1.1.3 列混合(MixColumns) 1.1.4 加轮密钥 ...

  7. 隐私计算加密技术基础系列(下)对称与非对称加密的应用场景

    本章是<隐私计算加密技术基础>系列文章的最后一篇,感慨下,终于写完了,这个春节假期除了陪家人就是写着三篇文章了.其实写之前并没有觉得是多么难的事情,感觉这些原理自己都比较清楚,但是随着写的 ...

  8. App安全登录之密码、通讯加密方法(MD5,Base64,RSA,AES)

    今天研究了一下关于登录密码加密的问题,下面来说说实现. 一.RSA非对称加密: 具体流程如下:截取自http://blog.csdn.net/m372897500/article/details/50 ...

  9. 网络安全 —— 对称与非对称加密

    1. 对称非对称 信息的加密可分为对称和非对称两种方式,前者表示加密后的信息可以解密成原值,而后者无法根据加密后的信息还原为原值(public key 用于加密,secret key 用于解密). 对 ...

  10. 数字证书原理-HTTPS通信如何保证通信安全?只用对称和非对称加密就可以了吗?为什么需要数字证书?

    文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理, ...

最新文章

  1. 有没有办法使用命令行cURL跟踪重定向?
  2. python猜数字游戏编程、最后显示猜了几次_用Python完成猜数字游戏
  3. 为衣服添加NFC功能:挥下袖子就能安全支付,打开车门坐进去就能启动汽车|Nature子刊...
  4. 科技发烧友之单反佳能700d中高端
  5. window tool
  6. 今日头条上传图片时设置封面图报像素低的原因是什么
  7. 【Spring.net点滴】
  8. PowerShell 导出SharePoint管理中心解决方式
  9. Swift基础语法学习-4.Bool类型
  10. linux命令备忘录
  11. JS 页面刷新/数据刷新
  12. 2019春季PAT题解
  13. 参加了一场温州游资的婚礼,也太壕了
  14. java内存模型 infoq_深入理解 java 内存模型_程晓明_infoq.pdf
  15. 一文读懂 WalletConnect
  16. 零基础入门小程序,实战经验分享
  17. 千里走单骑:02-北京到上海骑记--Day1.首日征程
  18. Python 分数阶傅里叶变换
  19. html点击出现对勾,html , 对勾,警告,错误 三种情况
  20. 859-细谈安全的 HTTPS 协议

热门文章

  1. java的关闭钩子(Shutdown Hook)
  2. [Node.js] BDD和Mocha框架
  3. [JavaEE] Hibernate连接池配置测试
  4. Note for Consulting Handbook3
  5. Linux下配置安装NFS
  6. swagger 基础入门
  7. 1065. 最小公倍数
  8. 企业的IT 建设的三个过程
  9. 第一届数据库***大赛(欢迎大家共同讨论,发表自己的见解)
  10. About MS Reporting Service