iOS加密相关算法框架:CommonCrypto
明文: 明文指的是未被加密过的原始数据。
密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥: 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。
对称加密又叫做私钥加密 ,即信息的发送方和接收方使用 同一个密钥 去加密和解密数据。
对称加密的特点是 算法公开、计算量少、加密和解密速度快效率高 ,适合于对大数据量进行加密;
缺点是 双方使用相同的密钥、密钥传输的过程不安全、易被破解、因此为了保密其密钥需要经常更换
常见的对称加密算法有 AES、DES 、3DES、TDEA、Blowfish、RC5和IDEA。不过DES被认为是不安全的
加密过程:明文 + 加密算法 + 私钥 => 密文
解密过程: 密文 + 解密算法 + 私钥 => 明文
对称加密中用到的密钥叫做 私钥 ,私钥表示个人私有的密钥,即该密钥不能被泄露。
其 加密过程中的私钥与解密过程中用到的私钥是同一个密钥 ,这也是称加密之所以称之为“对称”的原因。由于对称加密的 算法是公开 的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的 缺点是密钥安全管理困难 。
3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。是DES像AES过渡的加密算法,是DES的一个更安全的变形,它以DES为基本模块,通过组合分组方法设计出分组加密算法。
非对称加密也叫做公钥加密 。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而 非对称加密使用一对密钥,即公钥和私钥 , 且二者成对出现 。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。两种使用方法:
哈希算法加密是通过哈希算法对数据加密、加密后的结果不可逆,即加密后不能在解密。
SHA加密,安全哈希算法,主要适用于数字签名签名标准( DSS )里面定义的数字签名算法( DSA )。对于长度小于 2^64 位的消息, SHA1 会产生一个160位的消息摘要。当接收消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当然除了 SHA1 还有 SHA256 以及 SHA512 等。
HMAC加密,给定一个密钥,对明文加密,做两次“散列”,得到的结果还是32位字符串。
就是或、与、异或、或者加上某个数据
特点:可逆、原始数据和加密数据长度保持一致
Hash算法
Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
常见的Hash算法: MD2、MD4、 MD5 、HAVAL、SHA、 SHA-1 、HMAC、HMAC-MD5、HMAC-SHA1
对称加密
指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。
常见的对称加密算法: DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和 AES
非对称加密
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。
常见的非对称加密算法: RSA 、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
Hash算法比较
对称加密算法比较
非对称加密算法比较
对称算法
1,秘钥管理:比较难,不适合互联网,一般用于内部系统
2,安全性:中
3,加密速度:快,适合大数据量的加解密处理
非对称算法
1,秘钥管理:秘钥容易管理
2,安全性:高
3,加密速度:比较慢,适合小数据量加解密或数据签名
一、哈希HASH
哈希(散列)函数 MD5 SHA1/256/512 HMAC
Hash的特点:
1算法是公开的
2对相同数据运算,得到的结果是一样的
3对不同数据运算,如MD5得到的结果是128位,32个字符的十六进制表示,没法逆运算
1MD5加密
MD5加密的特点:
不可逆运算
对不同的数据加密的结果是定长的32位字符(不管文件多大都一样)
对相同的数据加密,得到的结果是一样的(也就是复制)。
抗修改性 : 信息“指纹”,对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别
弱抗碰撞 : 已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的
强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的
MD5 应用:
一致性验证:MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,就像每个人都有自己独一无二的指纹,MD5对任何文件产生一个独一无二的数字指纹。
那么问题来了,你觉得这个MD5加密安全吗?其实是不安全的,不信的话可以到这个网站试试:md5破解网站。可以说嗖地一下就破解了你的MD5加密!
2SHA加密
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当让除了SHA1还有SHA256以及SHA512等。
二、base64加密
1Base64说明
描述:Base64可以成为密码学的基石,非常重要。
特点:可以将任意的二进制数据进行Base64编码
结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。
65字符:A~Z a~z 0~9 + / =
对文件进行base64编码后文件数据的变化:编码后的数据~=编码前数据的4/3,会大1/3左右。
2命令行进行Base64编码和解码
编码:base64 123png -o 123txt
解码:base64 123txt -o testpng -D
2Base64编码原理
1)将所有字符转化为ASCII码;
2)将ASCII码转化为8位二进制;
3)将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
4)统一在6位二进制前补两个0凑足8位;
5)将补0后的二进制转为十进制;
6)从Base64编码表获取十进制对应的Base64编码;
处理过程说明:
a转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。
b数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。
c不断进行,直到全部输入数据转换完成。
以上就是关于加密算法总结全部的内容,包括:加密算法总结、加密算法(Android用法)、2.哈希加密 & base64加密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)