论加密算法原理及其重要性
为什么要进行数据加密?
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
加密算法分类:
- 加密操作类型:
- 代换
- 置换
- 多重加密
- 所用的密钥个数
- 对称加密算法
- 公开加密算法
一:对称加密算法
亦称为常规/单密加密
发送方和接收方共享相同的密钥
所有经典加密都是对称加密,是在20世纪70年代公钥加密之前仅有的加密类型
针对数据加密的攻击手段
- 密码分析
从数学的角度分析密码算法
- 强力攻击
逐次试用每个密钥进行解密,直至有意义的信息出现
加密算法的安全性
- 无条件安全
- 无论提供的密文有多少,如果由一个加密方案产生的密文中包含的信息不足以唯一地决定对应的明文
- 除了一次一密的方案外,没有无条件安全的算法
- 计算上安全
- 破译密码的代价超出密文信息的价值
- 破译密码的事件超出密文信息的有效生命期
密钥设置建议:
足够长,包含数字、字母和其他符号 ,经常更换
DES加密算法过程:
其他现代对称加密算法:三重DES、Blowfish、RC5、IDEA、AES(对于几种加密算法的内部实现原理,我不想研究的太透彻,这些问题就留给科学家们去研究吧).
对称加密算法存在的问题:
无法保护发送方,如果接收方伪造一个消息并宣称是由发送方发送的
密钥的分配:在建立安全通道前,如何安全交换密钥?(先有鸡,?还是先有蛋的问题)
二:公钥(非对称)加密算法算法
使用两个密钥:一个公钥、一个私钥
不对称:因为双方是不平等的
巧妙使用了数论概念
与对称加密是互相补充,而不是替代
需要使用很大的数和较复杂的运算,因此与对称密钥相比,较慢
对称加密与公钥加密比较
三:加密算法在实际开发中使用
因为对称加密算法在传输的过程中,不能保证私钥的安全,同时非对称加密在性能上又比较耗时。所以这两类算法恰恰起到了互补的作用。
一般涉及到安全问题的时候,这两类加密算法都会结合在一起使用。
如下是一个用户登录服务器的一个过程:使用了3Des和RSA两种算法。
//用户信息3Des加密 NSString *userInfoDataWithEncode = [TXTSignEncrypt stringBy3DesEncoding:encodingContent withKey:(char *)[keyData bytes]]; NSData *userInfoData = [NSString stringToByte:userInfoDataWithEncode]; //通过对3DES key进行RSA加密 NSString *tripleKeyEncodeWithRSA = [TXTSignEncrypt stringByRsaEncodingWith:threeDeskey WithKey:K_API_KEY]; NSData *tripleKeyData = [NSString stringToByte:tripleKeyEncodeWithRSA]; //将两者信息整合在一起 NSData *dataToServer = [SFCTLVForLogin PAIMTLVForLoginWithUserInfoData:userInfoData withEncryptKey:tripleKeyData]; //发送给后端服务器 loginRequest = [PAHTTPRequest sendRequestWithURL:url bodyData:dataToServer withTag:tag httpType:HTTP_RSA