常见加密算法知识总结

1、加密种类:

常见加密算法知识总结_第1张图片

1.1、不可逆加密:【Hash加密算法/散列算法/摘要算法】

  • 一旦加密就不能反向解密得到密码原文,一般用来加密用户密码,app的服务器端数据库里一般存储的也都是加密后的用户密码。

  • 在数据传输的过程中,首先把密码类数据经过MD5加密算法加密,然后再在外面使用可逆的加密方式加密一次,这样在数据传输的过程中,即便数据被截获了,但是想要完全破解,还是很难的。

  • Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

  • 用途:一般用于效验下载文件正确性,一般在网站上下载文件都能见到;存储用户敏感信息,如密码、 卡号等不可解密的信息。

  • 常见的不可逆加密算法有:MD5、SHA、HMAC

      MD5
      Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供
      消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security
       Inc. April 1992)。
      MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一
      (又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法
      的基础原理,MD5的前身有MD2、MD3和MD4。
      
      MD5算法具有以下特点:
      1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
      2、容易计算:从原数据计算出MD5值很容易。
      3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
      4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
      	 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节  
      	 串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
    

      SHA1 
      安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签
      名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到
      消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生
      不同的消息摘要。
      	
      SHA1有如下特点:
      1.不可以从消息摘要中复原信息;
      2.两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。
    

1.2、可逆加密:可逆加密有对称加密和非对称加密。

1、对称加密:【文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥】

  • 在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。

  • 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

  • 用途:一般用于保存用户手机号、身份证等敏感但能解密的信息。

  • 常见的对称加密算法有AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6

     DES
      数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护
      金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用
      DEA。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条
      件下可以免除专利使用费而使用。1997年被美国政府正式采纳.
      加密原理
      DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 
      Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运
      算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移
      位操作四种基本运算。
      
      特点:
      1.DES算法具有对称性;(只用一个秘钥串,加密与解密是同一个)
      2.DES的加密和解密可以用完全相同的硬件来实现;
    

    AES
    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的
    一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加
    密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标
    准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
    
    特点:
    1.AES在软件及硬件上都能快速地加解密
    2.AES较易于实作,且只需要很少的存储器

2、非对称加密:【两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密】

  • 非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

  • 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

  • 服务器存私钥,客户端拿公钥,客户端加解密算法可以做成so库。

  • 非对称加密与对称加密相比,其安全性更好;非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

  • 用途:一般用于签名和认证。

  • 常见的非对称加密算法有:RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal

      RSA
      RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard 
      Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开
      头字母拼在一起组成的。
      RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数
      据加密标准。
      今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥
      匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加
      密安全性受到了挑战和质疑。
      RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此
      可以将乘积公开作为加密密钥。
      
      特点:
      1.安全性较高(目前为止没有有效的破解方法);
      2.公钥与秘钥是成对出现的(用公钥加密必须用私钥才能解密,用私钥加密必须用公钥才能解密)
      3.缺点是运算速度比较慢
    

2、Android开发中一般的加密应用:

1、密码类数据:

为了让用户放心注册,密码类的数据的加密一般都是经过双重加密的,第一重加密使用不可逆的MD5算法加密,第二重加密是可逆的加密。

2、非密码类的数据:

非密码类的数据,虽然这些数据也很重要,但是一般其他人截获了这些数据对他们意义不太大,这些数据我们一般采用可逆的加密方式加密,因为我们在服务器端还是需要这些数据的明文的,常用的可逆加密方法有:对称加密和非对称加密。

3、 图片缓存key:

一般用图片的url地址加上token之类的,再用md5进行不可逆加密,以确保每张图片的key都具有唯一性,并且是合法字符。

3、一般保证数据传输的安全性措施:

使用HTTP协议可以使用非对称加密,服务器存私钥,客户端拿公钥,客户端加解密算法可以做成so库,加大被破解难度。
给协议加上时间戳等特定参数提交服务器做校验,HTTP协议头也可以做相关安全参数设定,这个得服务器和客户端商定方案了。
使用HTTPS协议通讯,HTTPS是协议通道加密,会更直接,更全局性。

4、注意点:

Base64编码:Base64只是一种编码方式,不算加密方法。Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’。

你可能感兴趣的:(加密算法)