一.对称加密
常用的对称加密DES、AES,DES也有衍生的3DES等加密方式
对称加密用到的加密模式有ECB、CBC、CFB、OFB,这里简单介绍一下前面两种加密模式ECB和CBC
的实现原理。
. ECB
采用相同且唯一的密钥 各个加密块之间相对独立,并行进行
. CBC
前一块密文块需要加入到下一块明文块的的加密工作当中,以此循环,当第一个明文块0需要加密时,需要初始化向量IV,向量IV和前一个密文块加入到明文块的加密工作中,是为了有效破坏明文数据的模式,来确保一定的安全性。
使用相同密钥,串行进行,
两者对比:
. ECB优缺点
简单、利于并行计算、误差不会被传染
不能隐藏明文块,可能对铭文进行攻击
. CBC优缺点
安全性更佳
不利于并行计算、误差具有传递性、需要初始化向量IV
我们可以对实际存在的文件利用终端命令指令来进行命令加密
. ECB
对testECB.rtf文件加密生成testECB.bin加密文件
openssl enc -des-ecb -K 616263 -nosalt -in testECB.rtf -out testECB.bin
对刚刚生成的testECB.bin文件解密成testECB1.rtf文件
openssl enc -des-ecb -K 616263 -nosalt -in testECB.bin -out testECB1.rtf -d
. CBC
对testCBC.rtf文件加密生成testCBC.bin加密文件
openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -in testCBC.rtf -out testCBC.bin
对刚刚生产的testCBC.bin文件解密成testCBC1.rtf文件
openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -in testCBC.bin -out testCBC1.rtf -d
到这里我们就讲完了对称加密的常用的两种加密模式,对称加密常用的DES和AES,在IOS代码的实现见文末demo。
二.非对称加密
拥有不通的密钥,公钥、私钥。常用到的RSA。
. 工作原理
A生成的公钥和私钥 ,A将公钥给B,B利用A给的公钥对文件进行加密,B再将加密后的文件给A,
A利用自己的私钥把B给过来的文件进行解密。
这种情况,很明显的是只有公钥在传输,攻击也只有攻击公钥
RSA在IOS中的代码实现见Demo
注意:RSA需要在本地生成公钥和私钥,命令:
openssl genrsa -out private_key.pem 1024
openssl req -new -key private_key.pem -out rsaCertReq.csr
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
//为ios创建 public_key.der
openssl x509 -outform der -in rsaCert.crt -out public_key.der
// 为ios创建 private_key.p12,这一步,请记住你输入的密码,IOS代码里会用到
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
// 为JAVA创建 rsa_public_key.pem
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout
// 为JAVA创建 pkcs8_private_key.pem
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
简书无法上传DEMO附件,需要的可以评论联系我