视频地址: https://www.bilibili.com/video/BV1w4411m7GL

对称加密

加密 f1(key,data)=Xf_1(\text{key},\text{data})=Xf1​(key,data)=X

解密 f2(key,X)=dataf_2(\text{key},\text{X})=dataf2​(key,X)=data

多个客户端一般会共享一个key

黑客作为客户端也能得到key

非对称加密

使用公钥加密 f1(public key,data)=Yf_1(\text{public key}, \text{data})=Yf1​(public key,data)=Y

使用私钥解密 f2(secret key,Y)=dataf_2(\text{secret key}, Y)=\text{data}f2​(secret key,Y)=data

或者

使用私钥加密 f3(secret key,data)=Yf_3(\text{secret key}, \text{data})=Yf3​(secret key,data)=Y

使用公钥解密 f4(public key,Y)=dataf_4(\text{public key}, Y)=\text{data}f4​(public key,Y)=data

黑客能拿到公钥, 所以能对返回的数据解密, 但是没有私钥不能对发送的数据解密.

两者结合: HTTPS通信

客户端和服务器先使用非对称加密协商一个key, 然后再用对称加密传输数据

#mermaid-svg-k5bVS9xRhBpoDH3Y .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .label text{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .node rect,#mermaid-svg-k5bVS9xRhBpoDH3Y .node circle,#mermaid-svg-k5bVS9xRhBpoDH3Y .node ellipse,#mermaid-svg-k5bVS9xRhBpoDH3Y .node polygon,#mermaid-svg-k5bVS9xRhBpoDH3Y .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-k5bVS9xRhBpoDH3Y .node .label{text-align:center;fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .node.clickable{cursor:pointer}#mermaid-svg-k5bVS9xRhBpoDH3Y .arrowheadPath{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-k5bVS9xRhBpoDH3Y .flowchart-link{stroke:#333;fill:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-k5bVS9xRhBpoDH3Y .edgeLabel rect{opacity:0.9}#mermaid-svg-k5bVS9xRhBpoDH3Y .edgeLabel span{color:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-k5bVS9xRhBpoDH3Y .cluster text{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-k5bVS9xRhBpoDH3Y .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-k5bVS9xRhBpoDH3Y text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .actor-line{stroke:grey}#mermaid-svg-k5bVS9xRhBpoDH3Y .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .sequenceNumber{fill:#fff}#mermaid-svg-k5bVS9xRhBpoDH3Y #sequencenumber{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y #crosshead path{fill:#333;stroke:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .messageText{fill:#333;stroke:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-k5bVS9xRhBpoDH3Y .labelText,#mermaid-svg-k5bVS9xRhBpoDH3Y .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .loopText,#mermaid-svg-k5bVS9xRhBpoDH3Y .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-k5bVS9xRhBpoDH3Y .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-k5bVS9xRhBpoDH3Y .noteText,#mermaid-svg-k5bVS9xRhBpoDH3Y .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-k5bVS9xRhBpoDH3Y .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-k5bVS9xRhBpoDH3Y .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-k5bVS9xRhBpoDH3Y .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .section{stroke:none;opacity:0.2}#mermaid-svg-k5bVS9xRhBpoDH3Y .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-k5bVS9xRhBpoDH3Y .section2{fill:#fff400}#mermaid-svg-k5bVS9xRhBpoDH3Y .section1,#mermaid-svg-k5bVS9xRhBpoDH3Y .section3{fill:#fff;opacity:0.2}#mermaid-svg-k5bVS9xRhBpoDH3Y .sectionTitle0{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .sectionTitle1{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .sectionTitle2{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .sectionTitle3{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-k5bVS9xRhBpoDH3Y .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .grid path{stroke-width:0}#mermaid-svg-k5bVS9xRhBpoDH3Y .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-k5bVS9xRhBpoDH3Y .task{stroke-width:2}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText:not([font-size]){font-size:11px}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-k5bVS9xRhBpoDH3Y .task.clickable{cursor:pointer}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText0,#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText1,#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText2,#mermaid-svg-k5bVS9xRhBpoDH3Y .taskText3{fill:#fff}#mermaid-svg-k5bVS9xRhBpoDH3Y .task0,#mermaid-svg-k5bVS9xRhBpoDH3Y .task1,#mermaid-svg-k5bVS9xRhBpoDH3Y .task2,#mermaid-svg-k5bVS9xRhBpoDH3Y .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutside0,#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutside2{fill:#000}#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutside1,#mermaid-svg-k5bVS9xRhBpoDH3Y .taskTextOutside3{fill:#000}#mermaid-svg-k5bVS9xRhBpoDH3Y .active0,#mermaid-svg-k5bVS9xRhBpoDH3Y .active1,#mermaid-svg-k5bVS9xRhBpoDH3Y .active2,#mermaid-svg-k5bVS9xRhBpoDH3Y .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-k5bVS9xRhBpoDH3Y .activeText0,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeText1,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeText2,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeText3{fill:#000 !important}#mermaid-svg-k5bVS9xRhBpoDH3Y .done0,#mermaid-svg-k5bVS9xRhBpoDH3Y .done1,#mermaid-svg-k5bVS9xRhBpoDH3Y .done2,#mermaid-svg-k5bVS9xRhBpoDH3Y .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-k5bVS9xRhBpoDH3Y .doneText0,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneText1,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneText2,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneText3{fill:#000 !important}#mermaid-svg-k5bVS9xRhBpoDH3Y .crit0,#mermaid-svg-k5bVS9xRhBpoDH3Y .crit1,#mermaid-svg-k5bVS9xRhBpoDH3Y .crit2,#mermaid-svg-k5bVS9xRhBpoDH3Y .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCrit0,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCrit1,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCrit2,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCrit0,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCrit1,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCrit2,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-k5bVS9xRhBpoDH3Y .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-k5bVS9xRhBpoDH3Y .milestoneText{font-style:italic}#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCritText0,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCritText1,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCritText2,#mermaid-svg-k5bVS9xRhBpoDH3Y .doneCritText3{fill:#000 !important}#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCritText0,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCritText1,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCritText2,#mermaid-svg-k5bVS9xRhBpoDH3Y .activeCritText3{fill:#000 !important}#mermaid-svg-k5bVS9xRhBpoDH3Y .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-k5bVS9xRhBpoDH3Y g.classGroup text .title{font-weight:bolder}#mermaid-svg-k5bVS9xRhBpoDH3Y g.clickable{cursor:pointer}#mermaid-svg-k5bVS9xRhBpoDH3Y g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-k5bVS9xRhBpoDH3Y g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-k5bVS9xRhBpoDH3Y .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-k5bVS9xRhBpoDH3Y .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .dashed-line{stroke-dasharray:3}#mermaid-svg-k5bVS9xRhBpoDH3Y #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y .commit-id,#mermaid-svg-k5bVS9xRhBpoDH3Y .commit-msg,#mermaid-svg-k5bVS9xRhBpoDH3Y .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-k5bVS9xRhBpoDH3Y g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-k5bVS9xRhBpoDH3Y g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-k5bVS9xRhBpoDH3Y g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-k5bVS9xRhBpoDH3Y .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-k5bVS9xRhBpoDH3Y .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-k5bVS9xRhBpoDH3Y .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-k5bVS9xRhBpoDH3Y .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-k5bVS9xRhBpoDH3Y .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-k5bVS9xRhBpoDH3Y .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-k5bVS9xRhBpoDH3Y .edgeLabel text{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-k5bVS9xRhBpoDH3Y .node circle.state-start{fill:black;stroke:black}#mermaid-svg-k5bVS9xRhBpoDH3Y .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-k5bVS9xRhBpoDH3Y #statediagram-barbEnd{fill:#9370db}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-state .divider{stroke:#9370db}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-k5bVS9xRhBpoDH3Y .note-edge{stroke-dasharray:5}#mermaid-svg-k5bVS9xRhBpoDH3Y .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-k5bVS9xRhBpoDH3Y .error-icon{fill:#522}#mermaid-svg-k5bVS9xRhBpoDH3Y .error-text{fill:#522;stroke:#522}#mermaid-svg-k5bVS9xRhBpoDH3Y .edge-thickness-normal{stroke-width:2px}#mermaid-svg-k5bVS9xRhBpoDH3Y .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-k5bVS9xRhBpoDH3Y .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-k5bVS9xRhBpoDH3Y .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-k5bVS9xRhBpoDH3Y .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-k5bVS9xRhBpoDH3Y .marker{fill:#333}#mermaid-svg-k5bVS9xRhBpoDH3Y .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-k5bVS9xRhBpoDH3Y {color: rgba(0, 0, 0, 0.75);font: ;}ClientServer索取公钥返回公钥使用公钥加密数据随机number1得到Y发送Y使用私钥解密Y得到number1作为对称加密的key发送ok上面是非对称加密下面是对称加密使用number1加密数据并发送使用number1解密数据并返回ClientServer

中间人攻击

#mermaid-svg-gSrCkdMxIDSOak7v .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-gSrCkdMxIDSOak7v .label text{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .node rect,#mermaid-svg-gSrCkdMxIDSOak7v .node circle,#mermaid-svg-gSrCkdMxIDSOak7v .node ellipse,#mermaid-svg-gSrCkdMxIDSOak7v .node polygon,#mermaid-svg-gSrCkdMxIDSOak7v .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-gSrCkdMxIDSOak7v .node .label{text-align:center;fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .node.clickable{cursor:pointer}#mermaid-svg-gSrCkdMxIDSOak7v .arrowheadPath{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-gSrCkdMxIDSOak7v .flowchart-link{stroke:#333;fill:none}#mermaid-svg-gSrCkdMxIDSOak7v .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-gSrCkdMxIDSOak7v .edgeLabel rect{opacity:0.9}#mermaid-svg-gSrCkdMxIDSOak7v .edgeLabel span{color:#333}#mermaid-svg-gSrCkdMxIDSOak7v .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-gSrCkdMxIDSOak7v .cluster text{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-gSrCkdMxIDSOak7v .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-gSrCkdMxIDSOak7v text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-gSrCkdMxIDSOak7v .actor-line{stroke:grey}#mermaid-svg-gSrCkdMxIDSOak7v .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-gSrCkdMxIDSOak7v .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-gSrCkdMxIDSOak7v #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-gSrCkdMxIDSOak7v .sequenceNumber{fill:#fff}#mermaid-svg-gSrCkdMxIDSOak7v #sequencenumber{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v #crosshead path{fill:#333;stroke:#333}#mermaid-svg-gSrCkdMxIDSOak7v .messageText{fill:#333;stroke:#333}#mermaid-svg-gSrCkdMxIDSOak7v .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-gSrCkdMxIDSOak7v .labelText,#mermaid-svg-gSrCkdMxIDSOak7v .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-gSrCkdMxIDSOak7v .loopText,#mermaid-svg-gSrCkdMxIDSOak7v .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-gSrCkdMxIDSOak7v .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-gSrCkdMxIDSOak7v .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-gSrCkdMxIDSOak7v .noteText,#mermaid-svg-gSrCkdMxIDSOak7v .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-gSrCkdMxIDSOak7v .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-gSrCkdMxIDSOak7v .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-gSrCkdMxIDSOak7v .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-gSrCkdMxIDSOak7v .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .section{stroke:none;opacity:0.2}#mermaid-svg-gSrCkdMxIDSOak7v .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-gSrCkdMxIDSOak7v .section2{fill:#fff400}#mermaid-svg-gSrCkdMxIDSOak7v .section1,#mermaid-svg-gSrCkdMxIDSOak7v .section3{fill:#fff;opacity:0.2}#mermaid-svg-gSrCkdMxIDSOak7v .sectionTitle0{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .sectionTitle1{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .sectionTitle2{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .sectionTitle3{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-gSrCkdMxIDSOak7v .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .grid path{stroke-width:0}#mermaid-svg-gSrCkdMxIDSOak7v .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-gSrCkdMxIDSOak7v .task{stroke-width:2}#mermaid-svg-gSrCkdMxIDSOak7v .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .taskText:not([font-size]){font-size:11px}#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-gSrCkdMxIDSOak7v .task.clickable{cursor:pointer}#mermaid-svg-gSrCkdMxIDSOak7v .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gSrCkdMxIDSOak7v .taskText0,#mermaid-svg-gSrCkdMxIDSOak7v .taskText1,#mermaid-svg-gSrCkdMxIDSOak7v .taskText2,#mermaid-svg-gSrCkdMxIDSOak7v .taskText3{fill:#fff}#mermaid-svg-gSrCkdMxIDSOak7v .task0,#mermaid-svg-gSrCkdMxIDSOak7v .task1,#mermaid-svg-gSrCkdMxIDSOak7v .task2,#mermaid-svg-gSrCkdMxIDSOak7v .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutside0,#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutside2{fill:#000}#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutside1,#mermaid-svg-gSrCkdMxIDSOak7v .taskTextOutside3{fill:#000}#mermaid-svg-gSrCkdMxIDSOak7v .active0,#mermaid-svg-gSrCkdMxIDSOak7v .active1,#mermaid-svg-gSrCkdMxIDSOak7v .active2,#mermaid-svg-gSrCkdMxIDSOak7v .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-gSrCkdMxIDSOak7v .activeText0,#mermaid-svg-gSrCkdMxIDSOak7v .activeText1,#mermaid-svg-gSrCkdMxIDSOak7v .activeText2,#mermaid-svg-gSrCkdMxIDSOak7v .activeText3{fill:#000 !important}#mermaid-svg-gSrCkdMxIDSOak7v .done0,#mermaid-svg-gSrCkdMxIDSOak7v .done1,#mermaid-svg-gSrCkdMxIDSOak7v .done2,#mermaid-svg-gSrCkdMxIDSOak7v .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-gSrCkdMxIDSOak7v .doneText0,#mermaid-svg-gSrCkdMxIDSOak7v .doneText1,#mermaid-svg-gSrCkdMxIDSOak7v .doneText2,#mermaid-svg-gSrCkdMxIDSOak7v .doneText3{fill:#000 !important}#mermaid-svg-gSrCkdMxIDSOak7v .crit0,#mermaid-svg-gSrCkdMxIDSOak7v .crit1,#mermaid-svg-gSrCkdMxIDSOak7v .crit2,#mermaid-svg-gSrCkdMxIDSOak7v .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-gSrCkdMxIDSOak7v .activeCrit0,#mermaid-svg-gSrCkdMxIDSOak7v .activeCrit1,#mermaid-svg-gSrCkdMxIDSOak7v .activeCrit2,#mermaid-svg-gSrCkdMxIDSOak7v .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-gSrCkdMxIDSOak7v .doneCrit0,#mermaid-svg-gSrCkdMxIDSOak7v .doneCrit1,#mermaid-svg-gSrCkdMxIDSOak7v .doneCrit2,#mermaid-svg-gSrCkdMxIDSOak7v .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-gSrCkdMxIDSOak7v .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-gSrCkdMxIDSOak7v .milestoneText{font-style:italic}#mermaid-svg-gSrCkdMxIDSOak7v .doneCritText0,#mermaid-svg-gSrCkdMxIDSOak7v .doneCritText1,#mermaid-svg-gSrCkdMxIDSOak7v .doneCritText2,#mermaid-svg-gSrCkdMxIDSOak7v .doneCritText3{fill:#000 !important}#mermaid-svg-gSrCkdMxIDSOak7v .activeCritText0,#mermaid-svg-gSrCkdMxIDSOak7v .activeCritText1,#mermaid-svg-gSrCkdMxIDSOak7v .activeCritText2,#mermaid-svg-gSrCkdMxIDSOak7v .activeCritText3{fill:#000 !important}#mermaid-svg-gSrCkdMxIDSOak7v .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-gSrCkdMxIDSOak7v g.classGroup text .title{font-weight:bolder}#mermaid-svg-gSrCkdMxIDSOak7v g.clickable{cursor:pointer}#mermaid-svg-gSrCkdMxIDSOak7v g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-gSrCkdMxIDSOak7v g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-gSrCkdMxIDSOak7v .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-gSrCkdMxIDSOak7v .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-gSrCkdMxIDSOak7v .dashed-line{stroke-dasharray:3}#mermaid-svg-gSrCkdMxIDSOak7v #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v .commit-id,#mermaid-svg-gSrCkdMxIDSOak7v .commit-msg,#mermaid-svg-gSrCkdMxIDSOak7v .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-gSrCkdMxIDSOak7v g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-gSrCkdMxIDSOak7v g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-gSrCkdMxIDSOak7v g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-gSrCkdMxIDSOak7v .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-gSrCkdMxIDSOak7v .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-gSrCkdMxIDSOak7v .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-gSrCkdMxIDSOak7v .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-gSrCkdMxIDSOak7v .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-gSrCkdMxIDSOak7v .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-gSrCkdMxIDSOak7v .edgeLabel text{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gSrCkdMxIDSOak7v .node circle.state-start{fill:black;stroke:black}#mermaid-svg-gSrCkdMxIDSOak7v .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-gSrCkdMxIDSOak7v #statediagram-barbEnd{fill:#9370db}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-state .divider{stroke:#9370db}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-gSrCkdMxIDSOak7v .note-edge{stroke-dasharray:5}#mermaid-svg-gSrCkdMxIDSOak7v .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-gSrCkdMxIDSOak7v .error-icon{fill:#522}#mermaid-svg-gSrCkdMxIDSOak7v .error-text{fill:#522;stroke:#522}#mermaid-svg-gSrCkdMxIDSOak7v .edge-thickness-normal{stroke-width:2px}#mermaid-svg-gSrCkdMxIDSOak7v .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-gSrCkdMxIDSOak7v .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-gSrCkdMxIDSOak7v .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-gSrCkdMxIDSOak7v .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-gSrCkdMxIDSOak7v .marker{fill:#333}#mermaid-svg-gSrCkdMxIDSOak7v .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-gSrCkdMxIDSOak7v {color: rgba(0, 0, 0, 0.75);font: ;}Client黑客Server各拥有一对公钥私钥索取公钥索取服务器的公钥返回服务器的公钥返回黑客的公钥使用黑客的公钥加密number1得到YY发送YY使用黑客的私钥解密YY得到number1使用服务器的公钥加密number1得到Y发送Y发送ok发送ok上面是非对称加密后面是对称加密用number1加密数据用number1解密数据保存或篡改数据用number1加密数据用number1解密数据用number1加密返回的数据保存或篡改数据Client黑客Server

CA(证书认证)

CA也有一对公钥和私钥. 服务器的公钥需要先用CA的私钥签名得到license

CA的公钥和私钥分别命名为cpk和csk

#mermaid-svg-2yGdJ0Bt9i3URhQH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .label text{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .node rect,#mermaid-svg-2yGdJ0Bt9i3URhQH .node circle,#mermaid-svg-2yGdJ0Bt9i3URhQH .node ellipse,#mermaid-svg-2yGdJ0Bt9i3URhQH .node polygon,#mermaid-svg-2yGdJ0Bt9i3URhQH .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-2yGdJ0Bt9i3URhQH .node .label{text-align:center;fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .node.clickable{cursor:pointer}#mermaid-svg-2yGdJ0Bt9i3URhQH .arrowheadPath{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-2yGdJ0Bt9i3URhQH .flowchart-link{stroke:#333;fill:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-2yGdJ0Bt9i3URhQH .edgeLabel rect{opacity:0.9}#mermaid-svg-2yGdJ0Bt9i3URhQH .edgeLabel span{color:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-2yGdJ0Bt9i3URhQH .cluster text{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-2yGdJ0Bt9i3URhQH .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-2yGdJ0Bt9i3URhQH text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .actor-line{stroke:grey}#mermaid-svg-2yGdJ0Bt9i3URhQH .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .sequenceNumber{fill:#fff}#mermaid-svg-2yGdJ0Bt9i3URhQH #sequencenumber{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH #crosshead path{fill:#333;stroke:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .messageText{fill:#333;stroke:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-2yGdJ0Bt9i3URhQH .labelText,#mermaid-svg-2yGdJ0Bt9i3URhQH .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .loopText,#mermaid-svg-2yGdJ0Bt9i3URhQH .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-2yGdJ0Bt9i3URhQH .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-2yGdJ0Bt9i3URhQH .noteText,#mermaid-svg-2yGdJ0Bt9i3URhQH .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-2yGdJ0Bt9i3URhQH .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-2yGdJ0Bt9i3URhQH .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-2yGdJ0Bt9i3URhQH .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .section{stroke:none;opacity:0.2}#mermaid-svg-2yGdJ0Bt9i3URhQH .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-2yGdJ0Bt9i3URhQH .section2{fill:#fff400}#mermaid-svg-2yGdJ0Bt9i3URhQH .section1,#mermaid-svg-2yGdJ0Bt9i3URhQH .section3{fill:#fff;opacity:0.2}#mermaid-svg-2yGdJ0Bt9i3URhQH .sectionTitle0{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .sectionTitle1{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .sectionTitle2{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .sectionTitle3{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-2yGdJ0Bt9i3URhQH .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .grid path{stroke-width:0}#mermaid-svg-2yGdJ0Bt9i3URhQH .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-2yGdJ0Bt9i3URhQH .task{stroke-width:2}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText:not([font-size]){font-size:11px}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-2yGdJ0Bt9i3URhQH .task.clickable{cursor:pointer}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText0,#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText1,#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText2,#mermaid-svg-2yGdJ0Bt9i3URhQH .taskText3{fill:#fff}#mermaid-svg-2yGdJ0Bt9i3URhQH .task0,#mermaid-svg-2yGdJ0Bt9i3URhQH .task1,#mermaid-svg-2yGdJ0Bt9i3URhQH .task2,#mermaid-svg-2yGdJ0Bt9i3URhQH .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutside0,#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutside2{fill:#000}#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutside1,#mermaid-svg-2yGdJ0Bt9i3URhQH .taskTextOutside3{fill:#000}#mermaid-svg-2yGdJ0Bt9i3URhQH .active0,#mermaid-svg-2yGdJ0Bt9i3URhQH .active1,#mermaid-svg-2yGdJ0Bt9i3URhQH .active2,#mermaid-svg-2yGdJ0Bt9i3URhQH .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-2yGdJ0Bt9i3URhQH .activeText0,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeText1,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeText2,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeText3{fill:#000 !important}#mermaid-svg-2yGdJ0Bt9i3URhQH .done0,#mermaid-svg-2yGdJ0Bt9i3URhQH .done1,#mermaid-svg-2yGdJ0Bt9i3URhQH .done2,#mermaid-svg-2yGdJ0Bt9i3URhQH .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-2yGdJ0Bt9i3URhQH .doneText0,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneText1,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneText2,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneText3{fill:#000 !important}#mermaid-svg-2yGdJ0Bt9i3URhQH .crit0,#mermaid-svg-2yGdJ0Bt9i3URhQH .crit1,#mermaid-svg-2yGdJ0Bt9i3URhQH .crit2,#mermaid-svg-2yGdJ0Bt9i3URhQH .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCrit0,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCrit1,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCrit2,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCrit0,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCrit1,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCrit2,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-2yGdJ0Bt9i3URhQH .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-2yGdJ0Bt9i3URhQH .milestoneText{font-style:italic}#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCritText0,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCritText1,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCritText2,#mermaid-svg-2yGdJ0Bt9i3URhQH .doneCritText3{fill:#000 !important}#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCritText0,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCritText1,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCritText2,#mermaid-svg-2yGdJ0Bt9i3URhQH .activeCritText3{fill:#000 !important}#mermaid-svg-2yGdJ0Bt9i3URhQH .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-2yGdJ0Bt9i3URhQH g.classGroup text .title{font-weight:bolder}#mermaid-svg-2yGdJ0Bt9i3URhQH g.clickable{cursor:pointer}#mermaid-svg-2yGdJ0Bt9i3URhQH g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-2yGdJ0Bt9i3URhQH g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-2yGdJ0Bt9i3URhQH .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-2yGdJ0Bt9i3URhQH .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .dashed-line{stroke-dasharray:3}#mermaid-svg-2yGdJ0Bt9i3URhQH #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH .commit-id,#mermaid-svg-2yGdJ0Bt9i3URhQH .commit-msg,#mermaid-svg-2yGdJ0Bt9i3URhQH .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-2yGdJ0Bt9i3URhQH g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-2yGdJ0Bt9i3URhQH g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-2yGdJ0Bt9i3URhQH g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-2yGdJ0Bt9i3URhQH .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-2yGdJ0Bt9i3URhQH .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-2yGdJ0Bt9i3URhQH .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-2yGdJ0Bt9i3URhQH .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-2yGdJ0Bt9i3URhQH .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-2yGdJ0Bt9i3URhQH .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-2yGdJ0Bt9i3URhQH .edgeLabel text{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2yGdJ0Bt9i3URhQH .node circle.state-start{fill:black;stroke:black}#mermaid-svg-2yGdJ0Bt9i3URhQH .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-2yGdJ0Bt9i3URhQH #statediagram-barbEnd{fill:#9370db}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-state .divider{stroke:#9370db}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-2yGdJ0Bt9i3URhQH .note-edge{stroke-dasharray:5}#mermaid-svg-2yGdJ0Bt9i3URhQH .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-2yGdJ0Bt9i3URhQH .error-icon{fill:#522}#mermaid-svg-2yGdJ0Bt9i3URhQH .error-text{fill:#522;stroke:#522}#mermaid-svg-2yGdJ0Bt9i3URhQH .edge-thickness-normal{stroke-width:2px}#mermaid-svg-2yGdJ0Bt9i3URhQH .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-2yGdJ0Bt9i3URhQH .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-2yGdJ0Bt9i3URhQH .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-2yGdJ0Bt9i3URhQH .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-2yGdJ0Bt9i3URhQH .marker{fill:#333}#mermaid-svg-2yGdJ0Bt9i3URhQH .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-2yGdJ0Bt9i3URhQH {color: rgba(0, 0, 0, 0.75);font: ;}Client内置cpkServer(pk, sk)CA(cpk, csk)pk用csk对pk签名得到licenselicenselicense用cpk验证license是否可信并取出公钥用pk加密number1得到YY解密Y得到number1作为对称加密的keyokClient内置cpkServer(pk, sk)CA(cpk, csk)

CA大部分是收费的

协商过程

上面协商key的过程其实很复杂

  1. Client→\to→Server 发送支持的SSL版本, 使用的非对称算法, 随机数①
  2. Server→\to→Client 确定使用的SSL版本, 使用的对称算法, 随机数②, 证书
  3. Client 进行证书认证
  4. Client 哈希(①,②)赋值给XX, Client→\to→Server 发送随机数③和XX
  5. Server验证 XX == 哈希(①,②), 然后使用任意函数(①, ②, ③)得到key
  6. Server→\to→Client hash(①,②,随机数④)赋值给zz
  7. Client 验证hash(①,②,④)==zz, 然后hash(①,②,③)得到key

HTTPS原理 草稿相关推荐

  1. (多图)老弟,你连HTTPS 原理都不懂,还给我讲“中间人攻击”,逗我吗...

    HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...

  2. 客户端访问https时应无浏览器(含终端)安全警告信息;_(多图)老弟,你连HTTPS 原理都不懂,还给我讲“中间人攻击”,逗我吗......

    HTTPS HTTPS 的实现原理 为什么数据传输是用对称加密? 为什么需要 CA 认证机构颁发证书? 浏览器是如何确保 CA 证书的合法性? 本地随机数被窃取怎么办? 用了 HTTPS 会被抓包吗? ...

  3. https原理与实践

    HTTPS 原理与证书实践 分类: Web应用 1.1 网络安全知识 1.1.1 网结安全出现背景 网络就是实现不同主机之间的通讯,网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台 ...

  4. Tengine HTTPS原理解析、实践与调试【转】

    本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验.内容主要有四个方面:HTTPS趋势.HTTPS基础.HTTPS实践.HTTPS调试. 一.HTTPS趋势 这一 ...

  5. HTTPS 原理解析

    http://www.cnblogs.com/zery/p/5164795.html 一 前言 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输 ...

  6. HTTPS原理全面介绍【备查】

    来源:https://www.cnblogs.com/haimishasha/p/11373034.html 目录 应用层协议:HTTPS 1. HTTPS定义 2. 密码学基础 3. HTTP通信问 ...

  7. HTTPS原理、单向和双向认证

    参考文章:https://blog.51cto.com/11883699/2160032 https://www.songma.com/news/txtlist_i39807v.html 众所周知,W ...

  8. HTTPS原理解析-转

    这篇文章关于Https的讲解真的是太透彻了,转过来备忘. 来源:腾讯bugly 另附两个SSL/TLS的交互详解:一.二 基于此文章的学习总结:下一篇文章 1.HTTPS 基础 HTTPS(Secur ...

  9. 计算机网络中的安全、常见攻击、以及HTTPS原理与抓包实践

    文章目录 计算机网络中的安全.常见攻击.以及HTTPS原理与抓包实践 计算机网络中的安全 什么是安全? 报文机密性 - 我们的谈话会被窃听吗? 报文完整性 - 我收到的报文被篡改过吗? 端点鉴别 - ...

最新文章

  1. 设计模式复习-备忘录模式
  2. EBS通过SQL查找所有的定时请求
  3. C#中的平台调用(P/Invoke)
  4. Quick Dicom batch editor(DICOM标签浏览编辑器)
  5. java生成Excel文件,下载
  6. python 从地址获取数据失败怎么解决_python面试题大全
  7. centos 7首次登录和常见命令
  8. GPU架构演进十年,从费米到安培
  9. 怎么用QQ查看对方IP
  10. 文件扩展名(后缀名)是什么?win10怎么显示扩展名?
  11. dell 恢复介质_使用Dell OS Recovery Tool制作Windows恢复U盘
  12. Linux之Python代码打包工具Nuitka使用说明
  13. Dva引用echarts制作统计图表
  14. 51单片机课设--篮球计分器
  15. Go语言单向通道——通道中的单行道
  16. 互联网让我的人生逆袭
  17. iceberg-flink 十:flink 窗口,事件时间,处理时间。
  18. 谈谈四天三夜的感受【记录篇】
  19. 常见蛋白质种类_[转载]常用蛋白质数据库
  20. 上云之路之企业级云上网络解决方案

热门文章

  1. C语言实验报告承诺书怎么写,实验报告承诺书范文.doc
  2. 2019上半年有哪些营销失败甚至变成危机公关的案例?
  3. 半导体激光器数值模拟Matlab,光栅外腔半导体激光器的输出特性研究
  4. cobol - 字符串操作
  5. “不患寡而患不均”是孔子的名言
  6. 高德图层加载有时出来有时不出来
  7. CSV文件的读取和写入
  8. ArcSoft's Office Rearrangement
  9. C++ 刽子手游戏(Hangman Judge, UVa 489)(算法竞赛入门经典例题4-2)
  10. 使用域名访问远程jupyter_使用域名访问远程jupyter_使用金万维宽带通动态域名服务实现速达3000异地访问......