一.對稱加密
常用的對稱加密DES劈猿、AES仇矾,DES也有衍生的3DES等加密方式
對稱加密用到的加密模式有ECB入热、CBC拍棕、CFB、OFB才顿,這里簡單介紹一下前面兩種加密模式ECB和CBC
的實(shí)現(xiàn)原理莫湘。
. ? ?ECB
采用相同且唯一的密鑰 各個(gè)加密塊之間相對獨(dú)立,并行進(jìn)行
. ? ?CBC
前一塊密文塊需要加入到下一塊明文塊的的加密工作當(dāng)中郑气,以此循環(huán)幅垮,當(dāng)?shù)谝粋€(gè)明文塊0需要加密時(shí),需要初始化向量IV尾组,向量IV和前一個(gè)密文塊加入到明文塊的加密工作中忙芒,是為了有效破壞明文數(shù)據(jù)的模式,來確保一定的安全性讳侨。
使用相同密鑰呵萨,串行進(jìn)行,
兩者對比:
. ?ECB優(yōu)缺點(diǎn)
? ? ? 簡單跨跨、利于并行計(jì)算潮峦、誤差不會被傳染
? ? ? 不能隱藏明文塊,可能對銘文進(jìn)行攻擊
. ? CBC優(yōu)缺點(diǎn)
? ? 安全性更佳
? ? 不利于并行計(jì)算勇婴、誤差具有傳遞性忱嘹、需要初始化向量IV
我們可以對實(shí)際存在的文件利用終端命令指令來進(jìn)行命令加密
. ? 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
? ? 對剛剛生產(chǎn)的testCBC.bin文件解密成testCBC1.rtf文件
? ? ? openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -in testCBC.bin -out testCBC1.rtf -d
到這里我們就講完了對稱加密的常用的兩種加密模式,對稱加密常用的DES和AES耕渴,在IOS代碼的實(shí)現(xiàn)見文末demo拘悦。
二.非對稱加密
擁有不通的密鑰,公鑰橱脸、私鑰础米。常用到的RSA。
. ? ?工作原理
? ? ? A生成的公鑰和私鑰 添诉,A將公鑰給B屁桑,B利用A給的公鑰對文件進(jìn)行加密,B再將加密后的文件給A栏赴,
? ? ? A利用自己的私鑰把B給過來的文件進(jìn)行解密掏颊。
? ? ? 這種情況,很明顯的是只有公鑰在傳輸艾帐,攻擊也只有攻擊公鑰
? ? ? RSA在IOS中的代碼實(shí)現(xiàn)見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創(chuàng)建 public_key.der
openssl x509 -outform der -in rsaCert.crt -out public_key.der
// 為ios創(chuàng)建 private_key.p12,這一步柒爸,請記住你輸入的密碼准浴,IOS代碼里會用到
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
// 為JAVA創(chuàng)建 rsa_public_key.pem
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout
// 為JAVA創(chuàng)建 pkcs8_private_key.pem
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
簡書無法上傳DEMO附件,需要的可以評論聯(lián)系我