加密与解密

1、常用加密算法

1.1 对称加密算法

    对称加密算法 如名字一样 加密和解密都是用同一个密钥(密钥是对称的);

    优点 :加密速度快 (互联网的数据流过于庞大, 速度慢的算法不适宜用于数据加密)

    缺点 :

        1) 密钥难以交换 (因为加密解密都用同一个密钥,密钥在传输过程中容易被窃取)

        2) 当需要加密多种数据时,密钥数量过多

    

    常用的对称加密算法(免费) :

        DES(56bit) :密钥是否安全,取决与密钥的长度

        3DES

        AES(128bit、256bit)

    

    商业加密算法 :

        Blowfish

        Twofish

        IDEA

        RC6

        CAST5

    

    应用场合 : 加密数据 (因加密速度快,在互联网中 很适用)

1.2 非对称加密算法(公钥加密)

    拥有一对密钥,分别为 公钥(public key) 与 私钥(secret key) , 公钥加密仅能用私钥解密,私钥解密也仅能用公钥加密;


    优点 :密钥长度为1024bit的整数倍,密钥长度很长,够安全

    缺点 :加密速度太慢 (不适合加密速度)

    

    常用加密算法 :

        RSA、DSA、EIGamal

    

    使用场合 : 密钥交换

    

    实现密钥交换过程 :

    

wps_clip_image-17145

1.3 单向加密 (Hash算法)、数字签名

    其实这个单向加密并非是加密(Encrypt) 而是哈希(Hash);

    哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的咋凑字符串(或叫做消息摘要、指纹信息、特征码), 而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文;

    哈希算法往往被设计成生成具有相同长度的文本,而加密算法生成的文本长度与明文本身的长度有关;

    哈希算法是不可逆的,而加密算法是可逆的;

wps_clip_image-23464

    常用的Hash算法 :

        MD5(128bit)

        SHA1(256bit)

        SHA256

        SHA384

        SHA512


        应用场合 : 数字签名


    数字签名实现过程 :

        那么什么是签名呢 ? 一位员工 他需要报销一笔 出差, 他把出差费列出后,给老总看,然后老总签名 通过, 此时再将此交给财务部, 财务部看到老总的签名后 知道老总已审核通过 那么此时 就将这笔报销费用打入此员工的帐号;

wps_clip_image-697

        1) A与B通信、A将自己公钥发给B

        2) A与B协商到底用哪种Hash算法 (双方倒要支持此Hash算法)

        3) A 使用 Hash对数据进行加密 获得 信息摘要

        4) A使用自己的私钥 将 数据和信息摘要一起进行加密

        5) B获得数据后, 使用 A的公钥进行解密

        6) 再使用 通过的算法 对数据进行Hash, 比对信息摘要, 若相同, 则确定 这个数据 是完整的 ;

        7) 但是这里有一个缺陷, 就是 B无从得知 这个公钥就是A的吗 ? 假设A发送是一个病毒, 然后B去找A理论, 这是你的公钥 是你发送给我的, 而此时A 已将自己的这个密钥对删除, 再生成另外一对密钥对 ; 而此时就要涉及到了一个工信部门, 也就是CA (证书的签发机构) ;