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教程。

  • 相关阅读:
    【CodeForces】889 C. Maximum Element 排列组合+动态规划
    【CodeForces】889 B. Restoration of string
    使用torchsummary打印torch模型结构,包括每层名字以及形状
    任意角度的场景文本检测论文简单总结
    vi快捷键
    sklearn框架使用例子,多种分类方法的集合,方便模型的融合
    卷积核的参数量和计算量
    windows下shell命令行的常用操作命令
    MARKDOWM书写规范
    keras使用horovod多gpu训练
  • 原文地址:https://www.cnblogs.com/whf191/p/6963999.html
Copyright © 2011-2022 走看看