zoukankan      html  css  js  c++  java
  • openssl部分解读

    前言

      openssl是个开源的加密库。可以对文件进行加密解密。

    小知识

    术语:

       单词:   Encryption  加密   Decryption   解密   ssl 安全socket层

    tsl 最新协议版本3.1兼容ssl3.0 ,可以自动切换

    加密解密:

        小孩加密方式,只能防小孩,对专业人士无效。专业加密方式比如openssl,可防止政府这类机构解密

         加密解密主要应用于战争。现在用于电子商务等。

    对称加密解密过程

    对称加密是用同一把钥匙进行加解密,他们的过程如下

         

      明文  ---》加密    ---》密文 ---》解密 ---》 明文

    #加密
    openssl  enc  -ciphername -k password -in file -out file
      -ciphername 加密算法名称  -in 需要加密的文件  -out输出的加密文件
    #解密
    openssl  enc  -ciphername -k password  -d -in file -out file
     -ciphername 加密算法名称  -in 需要解密的文件  -out输出的解密文件
    
    #加密算法有这些ciphers:base64,des,des3,rc2,rc5,aes256
    #那种方法加密算法,就用那种加密算法解密

    优点:对称加密速度快  缺点:密钥传递困难。

    非对称加密

    生成一对钥匙对。一个是公钥一个是私钥。公钥加密,只能通过私钥解密,私钥加密,只能通过公钥解密。优点传输方便,缺点 加密速度慢

    非对称加密的算法有rsa算法,非对称加密的key很长,比如1024位,难于记忆,通常把key保存为文件。具体过程如下

    openssl genrsa -out file 1024  #产生1024位私钥文件
    openssl  rsa  -in file  -pubout >pub.key 
    #生成公钥文件,私钥生成公钥,重定向pub.key 
    #-pubout 输出屏幕
    
    加解密例子:
    #公钥加密
    openssl  rsautl -in file -out file -inkey file  -pubin -encrypt
    #-pubin 表明公钥文件 -encrypt 加密
    #私钥解密
    openssl  rsautl -in file -out file -inkey file -decrypt

    混合使用

    由于对称和非对称的优缺点得知,用非对称加密数据耗时太长,不利于大数据传输,对称加密速度很对,但密钥传递困难,就有了混合模式,见下图:

    此图过程翻译如下:

    明文加密前,生成个随机的session key用来对称加密,session key把明文加密,公钥再把session key加密 ,打包两者发送给server端。

    解密过程:

    解包,私钥解密session key的加密,拿到解密的seesion key 再解密明文加密的数据.

    数字签名

    数字签名就是私钥加密,公钥解密。比如签订合同,商家手里是公钥,我是私钥,我用私钥签订了合同,商家如何证明是我签的呢?拿公钥能打开,就证明是我签的名

    #私钥签名
    openssl rsautl  -in test.txt -out test.sig  -inkey prv.key -sign
    -sign私钥签名
    
    #公钥解密
    openssl rsautl  -in test.sig -out test.txt   -inkey pub.key -pubin -verify
    

    哈希函数  

    常用的md5函数或sha1函数,生成的字节码分别是128/160位。

    #文件摘要的特征码
    openssl  dgst -md5 file
    md5sum  file
    openssl dgst -sha1 file
    sha1sum  file

    上一节我们知道,混合使用的方法,让两者加密技术羊长避短,思考下,如何证明公钥就是那个人的呢?

    证书

    ca证书是一个第三方机构,大家相信他。一个证书包含三个,第一个公钥,第二个DN,一些注册信息,第三个证书机构的私钥签名,签名的是什么?对公钥和DN这个文件进行hash,在用私钥对起加密。

     ssl

    安全socket层,也就是现在用的https,它位于传输层之上,应用层之下,因为它不修改TCP协议,所以被大家所接受,修改TCP协议的ssl都死掉了。

    ssl的应用:

    现在的HTTP的服务端软件流行的有apache和nginx,具体如何把证书嵌套在应用里,大家具体百度下。

    证书可以生成两种,一种是基于服务端自签名的证书,另一种是基于客户端和服务端都需要认证的证书。用的最多的也是第一种,第二种百度下就能找到,这里不提

    参数解释:
        -x509  国际标准格式
        -keyout  私钥文件
        -out  server.crt 数字证书
        -subj  "/CN=TEST-ONLY ..."
    生成证书:
        openssl req  -new -x509  -days 30  
        -keyout server.key -out server.crt  
        -subj "/CN=TEST-ONLY ..."

    总结:

       本知识来源于小布老师的openssl讲解,详细可以参考播布客搜小布老师的ssl教程。

  • 相关阅读:
    PAT (Advanced Level) 1080. Graduate Admission (30)
    PAT (Advanced Level) 1079. Total Sales of Supply Chain (25)
    PAT (Advanced Level) 1078. Hashing (25)
    PAT (Advanced Level) 1077. Kuchiguse (20)
    PAT (Advanced Level) 1076. Forwards on Weibo (30)
    PAT (Advanced Level) 1075. PAT Judge (25)
    PAT (Advanced Level) 1074. Reversing Linked List (25)
    PAT (Advanced Level) 1073. Scientific Notation (20)
    PAT (Advanced Level) 1072. Gas Station (30)
    PAT (Advanced Level) 1071. Speech Patterns (25)
  • 原文地址:https://www.cnblogs.com/whf191/p/6963999.html
Copyright © 2011-2022 走看看