• linux加密算法与应用


    加密算法

    对称加密

    公钥加密

    单向加密

    对称加密算法

    对称加密:加密和解密使用同一个密钥

    算法

    DES:Data Encryption Standard,56bits
    3DES:
    AES:Advanced (128, 192, 256bits)
    Blowfish,Twofish
    IDEA,RC6,CAST5

    特性:

    1、加密、解密使用同一个密钥,效率高
    2、将原始数据分割成固定大小的块,逐个进行加密

    缺陷:

    1、密钥过多
    2、密钥分发
    3、数据来源无法确认

    非对称加密算法

    公钥加密:密钥是成对出现

      公钥:公开给所有人;public key
      私钥:自己留存,必须保证其私密性;secret key
    特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

    功能:

    数字签名:主要在于让接收方确认发送方身份
    对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
    数据加密:适合加密较小数据

    缺点:

    密钥长,加密解密效率低下。有人测试使用非对称加密算法,加密1G数据需要约几分钟,但是解密花费数小时。

    算法:

    RSA(加密,数字签名)
    DSA(数字签名)

    实现加密:

    • 接收者
    生成公钥/密钥对:P和S
    公开公钥P,保密密钥S
    • 发送者
    使用接收者的公钥来加密消息M
    将P(M)发送给接收者
    • 接收者
    使用密钥S来解密:M=S(P(M))

    实现数字签名:

    原理:私钥只有自己有,使用自己私钥加密数据,对方只能使用自己的公钥才能解密。这样可以让对方验证我的身份。

    • 发送者
    生成公钥/密钥对:P和S
    公开公钥P,保密密钥S
    使用密钥S来加密消息M
    发送给接收者S(M)
    • 接收者
    使用发送者的公钥来解密M=P(S(M))

    单向加密(单向散列)

    指纹

    将任意数据缩小成固定大小的“指纹”,即无论加密的数据有多大,都输出统一的长度的字符串
      任意长度输入
      固定长度输出
      若修改数据,指纹也会改变(“不会产生冲突”)
      无法从指纹中重新生成数据(“单向”)

    功能:

    数据完整性校验。

    应用案例

    软件发行商,都会再发行时给出软件的校验码,我们再下载后,可使用相同算法加密该软件,通过和发行商给出的校验码比对,就能知道软件包是否可靠

    常见算法

    md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512

    常用工具

    md5sum | sha1sum [ --check ] file
    openssl、gpg
    rpm -V:校验软件包。
     

    应用

    数字签名

    原理:私钥只有自己有,使用自己私钥加密数据,对方只能使用自己的公钥才能解密。这样可以让对方验证我的身份。

    过程图:

     
     

     完整性验证

    文件完整性的两种实施方式

    被安装的文件

      MD5单向散列
      rpm --verify|-V package_name 

    发行的软件包文件

    GPG公钥签名
      rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
      rpm --checksig|-K pakage_file_name 
     
  • 相关阅读:
    jenkins系列---【linux安装nodejs】
    jenkins系列---【jenkins+gitlab+springCloud实现CI和CD】
    jenkins系列---【jenkins创建账号、分配角色】
    idea系列---【启动的时候报:Error running FinanceApplication. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun】
    ubuntu apt-get install xxx时一直报错E: Unable to locate package xxxxxxx
    mysql binlog 使用
    python项目导出所需要的依赖库
    mysql 导入sql文件时编码报错
    mysqldumps 远程备份
    pymongo的基本使用
  • 原文地址:https://www.cnblogs.com/wxxjianchi/p/13509489.html
Copyright © 2020-2023  润新知