/CryptoTools

加解密 签名

Primary LanguageObjective-C

CryptoTools

一、概述 加密分为单向加密和双向加密:

单向加密 又称为不可逆加密,即生成密文无法反解的一种加密方式;eg:MD5和SHA系列、HMAC。 双向加密 又称为可逆加密,即生成密文后,在需要的时候可以反解为明文;eg:RSA、AES、DES系列。

双向加密又包括非对称加密和对称加密:

对称性加密算法:也称单密钥加密。对称式加密就是加密和解密使用同一个密钥。 信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。 非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",两个必需配对使用。

另外:Base64不是安全领域下的加解密算法,只是一个编码算法,通常用于把二进制数据编码为可写的字符形式的数据,特别适合在http,mime协议下的网络快速传输数据。UTF-8和GBK中文的Base64编码结果是不同的。采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到,但这种方式很初级,很简单。Base64可以对图片文件进行编码传输。这是一种可逆的编码方式。编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/,共64个字符(26 + 26 + 10 + 1 + 1 = 64,其实是65个字符,“=”是填充字符。

二、区别 1、单向加密常用的算法:

MD5:MD5摘要算法。数字摘要算法也被称为哈希算法、散列算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个散列值(通常用 16 进制 表示为 32 个字符)。 2、对称加密:

优点:对称加密算法使用同一个密匙加密和解密,速度快,适合给大量数据加密。 缺点:对称加密客户端和服务端使用同一个密匙,存在被抓包破解的风险;需要大量钥匙,秘钥管理负担。 常用的算法:

DES:密钥长度可为128、192、256位 也就是16字节、24字节、32字节,DES是一种分组加密技术; AES:密钥长度64位 ,也就是8字节,相比较有更高速度和资源使用效率,高级加密标准,是下一代的加密算法标准,速度快,安全级别高; 3、非对称加密: 优点:非对称加密算法使用公钥加密,私钥解密,私钥签名,公钥验签。安全性高,私钥留一方保管,不要外泄,公钥交给请求方。 缺点:速度较慢。 常用的算法:

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。 Elgamal 背包算法 Rabin DSA:数字签名算法,是一种标准的 DSS(数字签名标准) Ecc:椭圆曲线密码编码学。ECC和RSA相比,相同的密钥长度,其抗攻击性要强很多倍。计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。存储空间占用小。 大量数据加密建议采用对称加密算法,提高加解密速度;小量的机密数据,可以采用非对称加密算法。

4、密钥: 选定了加密方式后,如何选择密钥:一般密钥越长运行速度越慢,所以根据实际需要的安全级别选择:一般RSA建议1024位的数字,ECC用160位,AES用128即可。