对称加密与非对称加密

2021-07-05  本文已影响0人  小白奔哥

一.对称加密

常用的对称加密DES、AES,DES也有衍生的3DES等加密方式

对称加密用到的加密模式有ECB、CBC、CFB、OFB,这里简单介绍一下前面两种加密模式ECB和CBC

的实现原理。

.    ECB

01

采用相同且唯一的密钥 各个加密块之间相对独立,并行进行

.    CBC

02

前一块密文块需要加入到下一块明文块的的加密工作当中,以此循环,当第一个明文块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附件,需要的可以评论联系我

上一篇下一篇

猜你喜欢

热点阅读