天天看點

**加密解密基礎、PKI及SSL、建立私有CA**

程序間通信

<a href="https://s1.51cto.com/wyfs02/M02/06/93/wKiom1m6RW2TaAlAAAAQWG--UQ4563.png" target="_blank"></a>

socket通信

用戶端--&gt;請求--&gt; 路由轉發 --&gt; 服務端,取出資源 --&gt; 封裝為可響應給用戶端的請求封包從接收請求端口發出

<a href="https://s1.51cto.com/wyfs02/M02/A5/44/wKioL1m6RjKB-41mAABLq3OggfE129.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/A5/44/wKioL1m6Rrby-lV-AACMTie_iDM553.png" target="_blank"></a>

SSL/TLS協定的實作 OpenSSL

OpenSSL程式元件

1

2

3

4

<code>[root@localhost CA]# rpm -ql openssl </code>

<code>/usr/lib/libcrypto.so.</code><code>10</code>  <code>//加密解密庫 (C,C++程式員調用的庫)</code>

<code>/usr/lib/libssl.so.</code><code>10</code>    <code>//ssl/tls實作 (C,C++程式員調用的庫) HTTP --&gt; HTTPS</code>

<code>/usr/bin/openssl        </code><code>//指令行工具</code>

SSL Secure Socket Layer 安全的套接字層

TLS Transfer Layer Secure  傳輸層安全

<a href="https://s5.51cto.com/wyfs02/M01/A6/4C/wKioL1nMZDajoNrTAAAy-E5_l6I201.png" target="_blank"></a>

SSL分層

<code>用元件拼裝而成的密碼學協定軟體(TLS, SSL)</code>

<code>标準算法組合成半成品</code>

<code>算法實作:AES-</code><code>128</code><code>-CBC-PKCS7</code>

<code>算法原語:AES(對稱加密),RSA(非對稱加密),MD5(單向加密)</code>

NIST制定的安全标準:保密性、完整性、可用性

SOCKET通信模型中面臨的風險:竊聽、僞裝、重放、消息篡改、拒絕服務

保證安全的手段(安全機制):加密、身份認證、通路控制、完整性校驗、路由控制、公證

提供安全機制的服務:認證、通路控制、保密性、完整性、不可否認性

保證服務的安全(算法和協定):對稱、非對稱、單向、密鑰交換

<a href="https://s3.51cto.com/wyfs02/M01/A5/44/wKioL1m6SOPhiJBCAAAxLepL5OY922.png" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M00/A5/44/wKioL1m6SNKxWhAPAABK7S4St_k923.png" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M01/06/94/wKiom1m6SP2QlrdYAAB2HouEZYQ322.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M02/A5/44/wKioL1m6SVnzb1t7AAA_FZPY5kU310.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M01/06/94/wKiom1m6SYSSGUX_AAAqgrZ-wPY068.png" target="_blank"></a>

加密解密的基礎原理

對稱加密、非對稱加密、單向加密、密鑰交換

<a href="https://s4.51cto.com/wyfs02/M00/A5/44/wKioL1m6TJOBA4n1AAB-GYkNdk4353.png" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M00/06/94/wKiom1m6UGSReRO7AABunbaw4Kk039.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/06/94/wKiom1m6UVnTBd7KAAAvN5XGtw8855.png" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M00/06/94/wKiom1m6UYmyM7u6AABblPy4SEE771.png" target="_blank"></a>

證書頒發機構CA、證書的作用

PKI

<a href="https://s1.51cto.com/wyfs02/M01/06/95/wKiom1m6UfDDO03gAAArzsWOzys930.png" target="_blank"></a>

證書的規範

<a href="https://s2.51cto.com/wyfs02/M02/A5/45/wKioL1m6UkaB0Mm-AABOrfeMfhU781.png" target="_blank"></a>

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

<code># openssl x509 -</code><code>in</code> <code>/etc/pki/CA/certs/httpd.crt -noout -text -subject -serial</code>

<code>Certificate:</code>

<code>    </code><code>Data:</code>

<code>        </code><code>Version: </code><code>3</code> <code>(</code><code>0x2</code><code>)    </code><code>//版本号</code>

<code>        </code><code>Serial </code><code>Number</code><code>: </code><code>1</code> <code>(</code><code>0x1</code><code>) </code><code>//序列号(每個從的惟一辨別)</code>

<code>    </code><code>Signature Algorithm: sha1WithRSAEncryption   </code><code>//簽名算法ID</code>

<code>        </code><code>Issuer: C=CD, ST=CD, L=ChengDu           </code><code>//CA名稱</code>

<code>                                                 </code><code>//證書有效期</code>

<code>            </code><code>Not Before: Sep </code><code>21</code> <code>07</code><code>:</code><code>16</code><code>:</code><code>20</code> <code>2017</code> <code>GMT</code>

<code>            </code><code>Not After : Sep </code><code>21</code> <code>07</code><code>:</code><code>16</code><code>:</code><code>20</code> <code>2018</code> <code>GMT</code>

<code>        </code><code>Subject: C=CD, ST=CD, O=MageEdu,        </code><code>//主體名稱(主機名)</code>

<code>        </code><code>Subject Public Key Info:                </code><code>//主體公鑰</code>

<code>                </code><code>Modulus:</code>

<code>                    </code><code>00</code><code>:eb:bd:</code><code>58</code><code>:2d:</code><code>05</code><code>:</code><code>54</code><code>:</code><code>49</code><code>:6d:ac:</code><code>42</code><code>:</code><code>98</code><code>:ee:cb:fb:</code>

<code>                    </code><code>ec:</code><code>62</code><code>:</code><code>20</code><code>:e1:1e:e4:</code><code>64</code><code>:ef:a3:0f:</code><code>23</code><code>:</code><code>17</code><code>:5b:fb:</code><code>66</code><code>:</code>

<code>                    </code><code>6d:a9:ce:</code><code>81</code><code>:c3:</code><code>53</code><code>:b5:f8:d9:</code><code>87</code><code>:da:c5:f3:2d:</code><code>77</code><code>:</code>

<code>                    </code><code>f2:de:3b:ed:</code><code>92</code><code>:</code><code>81</code><code>:a5:6c:</code><code>73</code><code>:f6:</code><code>83</code><code>:3c:c2:e5:</code><code>71</code><code>:</code>

<code>                    </code><code>49</code><code>:</code><code>02</code><code>:</code><code>02</code><code>:ae:</code><code>45</code><code>:d0:e0:</code><code>45</code><code>:f2:</code><code>41</code><code>:</code><code>34</code><code>:f8:</code><code>25</code><code>:</code><code>87</code><code>:</code><code>41</code><code>:</code>

<code>                    </code><code>82</code><code>:aa:</code><code>27</code><code>:e2:</code><code>17</code><code>:ca:fc:</code><code>74</code><code>:f3:</code><code>50</code><code>:</code><code>98</code><code>:b0:6c:b0:</code><code>26</code><code>:</code>

<code>                    </code><code>8b:a5:0d:a7:ca:4b:f5:</code><code>72</code><code>:f9:</code><code>44</code><code>:</code><code>87</code><code>:8b:</code><code>15</code><code>:</code><code>51</code><code>:ea:</code>

<code>                    </code><code>9a:</code><code>84</code><code>:6d:</code><code>22</code><code>:aa:fe:</code><code>84</code><code>:</code><code>62</code><code>:5a:</code><code>59</code><code>:</code><code>33</code><code>:c3:ff:</code><code>29</code><code>:</code><code>51</code><code>:</code>

<code>                    </code><code>a9:1a:</code><code>56</code><code>:c3:</code><code>63</code><code>:</code><code>22</code><code>:9a:6d:2c:</code><code>65</code><code>:</code><code>10</code><code>:a0:</code><code>57</code><code>:</code><code>78</code><code>:c2:</code>

<code>                    </code><code>aa:</code><code>70</code><code>:3d:</code><code>32</code><code>:eb:</code><code>59</code><code>:dc:f7:a9:0c:ea:e5:8e:</code><code>29</code><code>:1c:</code>

<code>                    </code><code>2f:</code><code>27</code><code>:0d:</code><code>53</code><code>:</code><code>87</code><code>:e1:2b:eb:fe:f8:8f:</code><code>61</code><code>:8f:</code><code>86</code><code>:ab:</code>

<code>                    </code><code>f1:9c:ee:</code><code>29</code><code>:</code><code>11</code><code>:c1:</code><code>71</code><code>:ca:</code><code>41</code><code>:</code><code>24</code><code>:3e:1d:e1:3c:</code><code>84</code><code>:</code>

<code>                    </code><code>60</code><code>:8a:d8:4d:ad:4c:b2:ca:8f:</code><code>25</code><code>:</code><code>29</code><code>:8a:</code><code>11</code><code>:1a:6f:</code>

<code>                    </code><code>1c:</code><code>03</code><code>:</code><code>88</code><code>:4a:</code><code>66</code><code>:</code><code>99</code><code>:</code><code>73</code><code>:</code><code>34</code><code>:7d:</code><code>76</code><code>:da:</code><code>85</code><code>:</code><code>77</code><code>:da:</code><code>65</code><code>:</code>

<code>                    </code><code>3a:e5:d3:ca:</code><code>58</code><code>:9f:8c:3a:3b:d5:e2:9e:</code><code>77</code><code>:1e:b2:</code>

<code>                    </code><code>f3:c8:5a:b6:2d:2b:</code><code>68</code><code>:</code><code>71</code><code>:</code><code>20</code><code>:9f:</code><code>94</code><code>:</code><code>41</code><code>:0c:4b:2f:</code>

<code>                    </code><code>93</code><code>:f5:</code><code>11</code><code>:4c:</code><code>89</code><code>:9e:d9:</code><code>48</code><code>:ac:de:</code><code>62</code><code>:d9:5e:</code><code>16</code><code>:</code><code>73</code><code>:</code>

<code>                    </code><code>5d:</code><code>39</code>

<code>                </code><code>Exponent: </code><code>65537</code> <code>(</code><code>0x10001</code><code>)</code>

<code>        </code><code>X509v3 extensions:          </code><code>//擴充資訊</code>

<code>            </code><code>X509v3 Subject Key Identifier:   </code><code>//發行者的惟一辨別</code>

<code>                </code><code>C5:AE:</code><code>93</code><code>:</code><code>32</code><code>:</code><code>58</code><code>:BC:DC:F4:</code><code>97</code><code>:E5:D7:</code><code>52</code><code>:</code><code>15</code><code>:</code><code>37</code><code>:</code><code>11</code><code>:4D:ED:4C:B1:8E</code>

<code>            </code><code>X509v3 Authority Key Identifier:  </code><code>//主體的惟一辨別</code>

<code>                </code><code>keyid:D4:F7:</code><code>60</code><code>:6F:E8:F4:2D:A6:F7:5D:</code><code>09</code><code>:</code><code>55</code><code>:D2:5D:</code><code>56</code><code>:DE:1F:</code><code>93</code><code>:</code><code>91</code><code>:</code><code>33</code>

<code>    </code><code>Signature Algorithm: sha1WithRSAEncryption     </code><code>//發行者簽名,簽名算法</code>

<code>         </code><code>3c:</code><code>90</code><code>:f8:cf:d6:</code><code>91</code><code>:</code><code>36</code><code>:ab:4b:</code><code>12</code><code>:</code><code>27</code><code>:</code><code>22</code><code>:</code><code>78</code><code>:</code><code>85</code><code>:7f:</code><code>32</code><code>:</code><code>15</code><code>:4e:</code>

<code>         </code><code>ac:</code><code>60</code><code>:</code><code>30</code><code>:</code><code>63</code><code>:</code><code>65</code><code>:fe:</code><code>91</code><code>:be:1b:e5:</code><code>22</code><code>:</code><code>65</code><code>:</code><code>34</code><code>:4d:f0:b2:2c:d9:</code>

<code>         </code><code>43</code><code>:</code><code>38</code><code>:b9:</code><code>76</code><code>:1e:</code><code>10</code><code>:ca:</code><code>27</code><code>:ab:e9:db:</code><code>00</code><code>:bd:d9:</code><code>87</code><code>:</code><code>96</code><code>:b5:a9:</code>

<code>         </code><code>ee:</code><code>34</code><code>:</code><code>34</code><code>:</code><code>01</code><code>:</code><code>05</code><code>:</code><code>88</code><code>:fc:</code><code>59</code><code>:ef:1d:9b:3f:8e:</code><code>49</code><code>:fa:e8:c9:</code><code>54</code><code>:</code>

<code>         </code><code>15</code><code>:d0:</code><code>63</code><code>:</code><code>14</code><code>:7d:</code><code>51</code><code>:e9:c8:8c:</code><code>50</code><code>:</code><code>77</code><code>:</code><code>81</code><code>:5c:f2:</code><code>56</code><code>:f8:c2:ba:</code>

<code>         </code><code>16</code><code>:</code><code>46</code><code>:cc:7f:e2:</code><code>72</code><code>:</code><code>27</code><code>:</code><code>56</code><code>:4e:a7:c4:2c:b4:</code><code>64</code><code>:</code><code>44</code><code>:9a:</code><code>84</code><code>:bc:</code>

<code>         </code><code>b2:</code><code>19</code><code>:5e:dd:3c:</code><code>20</code><code>:1c:a9:8c:</code><code>93</code><code>:ae:</code><code>94</code><code>:e4:8d:8e:d1:b7:</code><code>47</code><code>:</code>

<code>         </code><code>3a:c5:f6:df:</code><code>42</code><code>:6f:d9:</code><code>66</code><code>:d8:</code><code>25</code><code>:</code><code>97</code><code>:</code><code>03</code><code>:</code><code>94</code><code>:</code><code>01</code><code>:</code><code>60</code><code>:f5:a7:</code><code>60</code><code>:</code>

<code>         </code><code>c3:</code><code>33</code><code>:</code><code>55</code><code>:c3:cb:</code><code>12</code><code>:f8:</code><code>14</code><code>:1e:df:</code><code>17</code><code>:</code><code>00</code><code>:</code><code>26</code><code>:</code><code>49</code><code>:ce:</code><code>74</code><code>:fc:8f:</code>

<code>         </code><code>56</code><code>:</code><code>16</code><code>:</code><code>10</code><code>:b3:</code><code>16</code><code>:6e:</code><code>09</code><code>:</code><code>06</code><code>:8c:8f:</code><code>84</code><code>:e9:ec:e2:</code><code>84</code><code>:</code><code>06</code><code>:</code><code>82</code><code>:ac:</code>

<code>         </code><code>27</code><code>:8d:c5:f6:</code><code>83</code><code>:d8:3d:8d:de:d9:3e:e7:ae:</code><code>15</code><code>:</code><code>41</code><code>:a9:8d:</code><code>42</code><code>:</code>

<code>         </code><code>e9:9d:8d:b8:d7:</code><code>29</code><code>:</code><code>47</code><code>:</code><code>21</code><code>:</code><code>45</code><code>:3c:</code><code>39</code><code>:</code><code>49</code><code>:7a:</code><code>96</code><code>:</code><code>31</code><code>:bb:</code><code>95</code><code>:</code><code>93</code><code>:</code>

<code>         </code><code>7b:1b:</code><code>29</code><code>:</code><code>07</code><code>:dc:fe:ad:7c:f0:</code><code>28</code><code>:c5:cb:b5:</code><code>65</code><code>:8f:1f:7e:</code><code>60</code><code>:</code>

<code>         </code><code>a3:</code><code>86</code><code>:</code><code>50</code><code>:9f:c3:da:</code><code>53</code><code>:1f:6b:ec:ab:7c:1a:7e:</code><code>39</code><code>:</code><code>40</code><code>:</code><code>37</code><code>:</code><code>23</code><code>:</code>

<code>         </code><code>83</code><code>:</code><code>17</code><code>:</code><code>39</code><code>:</code><code>54</code>

<code>subject= /C=CD/ST=CD/O=MageEdu/OU=Ops/CN=www.magedu.com/emailAddress=lccnx.foxmail.com</code>

<code>serial=</code><code>01</code>

<code>1</code><code>、找到CA名,和簽名算法 </code>

<code>2</code><code>、找到信任機構的CA憑證</code>

<code>3</code><code>、用證書中的公鑰解密加密的數字簽名     </code><code>//身份認證</code>

<code>4</code><code>、用相同的簽名算法對證書提取特征碼     </code><code>//完整性檢驗</code>

<code>5</code><code>、比對特征碼是否相同</code>

基于公鑰加密通信機制

<a href="https://s1.51cto.com/wyfs02/M01/06/95/wKiom1m6UufSygJOAABJldsH0zw273.png" target="_blank"></a>

SSL Hand shark: 一個IP位址隻能建立一個SSL會話

<a href="https://s2.51cto.com/wyfs02/M01/06/95/wKiom1m6VJGyeIGoAAAy0IRiq0U953.png" target="_blank"></a>

openssl工具使用

<a href="https://s3.51cto.com/wyfs02/M02/A5/45/wKioL1m6VMfgHOcqAAAMgKFYM_I006.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M01/A5/45/wKioL1m6VUqQECx8AAAmpTpQZqQ526.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M00/A5/45/wKioL1m6VUrxq50_AAAdhBiTddg916.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/A5/45/wKioL1m6VUvzi_lwAAAdAQIF3uc493.png" target="_blank"></a>

對稱加密

<a href="https://s4.51cto.com/wyfs02/M01/06/95/wKiom1m6Vp2hTWRRAAA00llInOw632.png" target="_blank"></a>

使用示例

<code>使用示例:</code>

<code>1、建立臨時檔案</code>

<code># mktemp -p /tmp lcc.XXXX</code>

<code>/tmp/lcc</code><code>.hFdo</code>

<code>2、加密</code>

<code>    </code><code># openssl enc -e -seed-cfb -a -salt -in lcc.hFdo -out lcc.ciphertext</code>

<code>3、解密</code>

<code>    </code><code># openssl enc -d -seed-cfb -a -salt -in lcc.ciphertext -out lcc.txt</code>

單向加密

<code># sha1sum lcc.txt </code>

<code>5448d7dc19288c6ee87a25d4e2e990f72d786971  lcc.txt</code>

<code># openssl dgst -sha1 -hex lcc.txt </code>

<code>SHA1(lcc.txt)= 5448d7dc19288c6ee87a25d4e2e990f72d786971</code>

生成使用者密碼

<a href="https://s5.51cto.com/wyfs02/M00/06/95/wKiom1m6WTaDCLCpAAAc8BFJrPo226.png" target="_blank"></a>

<code># openssl passwd -</code><code>1</code> <code>-salt $(openssl rand -hex </code><code>4</code><code>) </code>

<code># openssl passwd -</code><code>1</code> <code>-salt $(openssl rand -hex </code><code>4</code><code>) </code><code>123</code>

生成随機數

<a href="https://s5.51cto.com/wyfs02/M00/A5/46/wKioL1m6WbyA9s-cAAAegW9iUB8236.png" target="_blank"></a>

<code># openssl rand -hex </code><code>4</code>      <code>(</code><code>8</code><code>位)</code>

<code># openssl rand -base64 </code><code>16</code> <code>| tr -d </code><code>'='</code>

生成密鑰對

<a href="https://s4.51cto.com/wyfs02/M02/A5/46/wKioL1m6WtDjQs8yAAA56vqJWM4956.png" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M01/06/95/wKiom1m6XFCAMmn2AABBclt0Ncg359.png" target="_blank"></a>

# openssl genrsa  -out lcc.private 1024

# openssl  rsa  -in lcc.private -out lcc.pubkey -pubout

私有網絡安全通信的實作方案

建構私有CA

<code>#  echo </code><code>"01"</code> <code>&gt; /etc/pki/CA/serial        </code><code>//必須為01,否則簽發不了</code>

<code>#  touch /etc/pki/CA/index.txt</code>

<code># cd /etc/pki/CA</code>

<code># (umask </code><code>077</code><code>;openssl genrsa -out </code><code>private</code><code>/cakey.pem </code><code>1024</code><code>)</code>

<code># openssl req -</code><code>new</code> <code>-x509 -key  </code><code>private</code><code>/cakey.pem -out cacert.pem -days </code><code>7300</code>

申請請求

<code># install -d /etc/httpd/ssl</code>

<code># cd /etc/httpd/ssl</code>

<code># (umask </code><code>077</code><code>;openssl genrsa -out httpd.key </code><code>1024</code><code>)</code>

<code># openssl req -</code><code>new</code> <code>-key httpd.key -out httpd.csr -days </code><code>365</code>

傳給CA

CA所在的主機必須有軟體能得以實作SSH協定&lt;dropbear, telnet, openssh-server&gt;,才能使用用戶端工具&lt;scp, sftp, ssh&gt;

<code># scp -P </code><code>9999</code> <code>/etc/httpd/ssl/httpd.csr root@</code><code>192.168</code><code>.</code><code>80.129</code>

CA驗證

CA簽發

<code># openssl ca -</code><code>in</code> <code>/tmp/httpd.csr -out /tmp/httpd.crt -days </code><code>365</code>

從證書存取庫中獲驗證書

<code># scp -P </code><code>9999</code> <code>root@</code><code>192.168</code><code>.</code><code>80.129</code><code>:/etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/</code>

驗證證書

<code># openssl x509 -</code><code>in</code> <code>certs/httpd.crt -noout -serial -subject</code>

在用戶端進行吊銷證書

1、擷取serial

<code># openssl x509 -</code><code>in</code> <code>/etc/httpd/ssl/httpd.crt -noout -serial -subject</code>

2、在CA,index.txt中檢視serial與用戶端是否相同

吊銷

<code># openssl ca -revoke newcerts/</code><code>01</code><code>.pem </code>

<code>Using configuration from /etc/pki/tls/openssl.cnf</code>

<code>Revoking Certificate </code><code>01</code><code>.</code>

<code>Data Base Updated</code>

3、生成吊銷證書編号

<code># echo </code><code>"01"</code> <code>&gt; /etc/pki/CA/crlnumber</code>

4、更新吊銷清單 

<code># openssl ca -gencrl -out thisca.crl</code>

5、檢視crl檔案

<code># openssl crl -</code><code>in</code> <code>thisca.crl -noout -text</code>

<code>Certificate Revocation List (CRL):</code>

<code>        </code><code>Version </code><code>2</code> <code>(</code><code>0x1</code><code>)        </code><code>//版本号</code>

<code>    </code><code>Signature Algorithm: sha1WithRSAEncryption       </code><code>//簽名算法</code>

<code>        </code><code>Issuer: /C=CD/ST=CD/L=ChengDu/O=MageEdu/OU=Ops/CN=ca.magedu.com/[email protected]</code>

<code>        </code><code>Last Update: Sep </code><code>21</code> <code>08</code><code>:</code><code>14</code><code>:</code><code>35</code> <code>2017</code> <code>GMT 有效期</code>

<code>        </code><code>Next Update: Oct </code><code>21</code> <code>08</code><code>:</code><code>14</code><code>:</code><code>35</code> <code>2017</code> <code>GMT</code>

<code>        </code><code>CRL extensions:    擴充資訊</code>

<code>            </code><code>X509v3 CRL </code><code>Number</code><code>:  吊銷号碼</code>

<code>                </code><code>1</code>

<code>Revoked Certificates:</code>

<code>    </code><code>Serial </code><code>Number</code><code>: </code><code>01</code>

<code>        </code><code>Revocation </code><code>Date</code><code>: Sep </code><code>21</code> <code>08</code><code>:</code><code>12</code><code>:</code><code>49</code> <code>2017</code> <code>GMT</code>

<code>    </code><code>Signature Algorithm: sha1WithRSAEncryption</code>

<code>         </code><code>5d:9e:a2:</code><code>60</code><code>:e3:</code><code>78</code><code>:9d:</code><code>24</code><code>:</code><code>42</code><code>:</code><code>92</code><code>:b6:</code><code>72</code><code>:</code><code>81</code><code>:</code><code>92</code><code>:</code><code>43</code><code>:d7:</code><code>02</code><code>:</code><code>12</code><code>:</code>

<code>         </code><code>54</code><code>:f0:8e:</code><code>08</code><code>:</code><code>21</code><code>:d8:</code><code>55</code><code>:</code><code>34</code><code>:1c:</code><code>70</code><code>:</code><code>53</code><code>:8d:ac:bd:</code><code>44</code><code>:</code><code>15</code><code>:</code><code>37</code><code>:</code><code>30</code><code>:</code>

<code>         </code><code>ba:ef:d2:</code><code>79</code><code>:</code><code>24</code><code>:</code><code>52</code><code>:</code><code>83</code><code>:a1:bb:</code><code>39</code><code>:</code><code>70</code><code>:af:</code><code>93</code><code>:</code><code>10</code><code>:</code><code>64</code><code>:</code><code>06</code><code>:b6:e6:</code>

<code>         </code><code>76</code><code>:fd:</code><code>12</code><code>:cf:b5:f7:</code><code>07</code><code>:</code><code>16</code><code>:c6:cd:</code><code>08</code><code>:a9:</code><code>46</code><code>:d3:</code><code>76</code><code>:</code><code>64</code><code>:</code><code>24</code><code>:</code><code>93</code><code>:</code>

<code>         </code><code>7d:b4:5a:6d:da:</code><code>38</code><code>:</code><code>08</code><code>:</code><code>31</code><code>:7b:6e:</code><code>76</code><code>:a6:4e:5a:c2:cc:e6:</code><code>24</code><code>:</code>

<code>         </code><code>be:</code><code>76</code><code>:b9:</code><code>38</code><code>:</code><code>46</code><code>:ed:c7:</code><code>16</code><code>:</code><code>61</code><code>:</code><code>88</code><code>:8c:ac:</code><code>90</code><code>:bd:4e:c9:9d:e5:</code>

<code>         </code><code>73</code><code>:8a:</code><code>76</code><code>:c4:</code><code>57</code><code>:</code><code>82</code><code>:</code><code>80</code><code>:</code><code>29</code><code>:</code><code>06</code><code>:c8:</code><code>81</code><code>:cd:7b:</code><code>37</code><code>:</code><code>08</code><code>:ee:</code><code>81</code><code>:</code><code>25</code><code>:</code>

<code>         </code><code>d6:</code><code>04</code><code>:8e:dd:dd:d8:1b:</code><code>47</code><code>:</code><code>44</code><code>:e4:bb:bc:3c:7f:cb:</code><code>97</code><code>:</code><code>68</code><code>:</code><code>27</code><code>:</code>

<code>         </code><code>b0:</code><code>32</code><code>:ea:fb:d1:</code><code>84</code><code>:</code><code>91</code><code>:7e:</code><code>50</code><code>:</code><code>05</code><code>:</code><code>14</code><code>:0a:1d:</code><code>65</code><code>:2a:5e:ba:</code><code>41</code><code>:</code>

<code>         </code><code>1d:dd:a4:</code><code>39</code><code>:e5:d2:b5:2b:</code><code>33</code><code>:b0:</code><code>56</code><code>:b3:</code><code>78</code><code>:cc:</code><code>99</code><code>:</code><code>69</code><code>:c9:</code><code>89</code><code>:</code>

<code>         </code><code>0e:a0:</code><code>71</code><code>:f1:5f:ca:</code><code>40</code><code>:</code><code>57</code><code>:</code><code>73</code><code>:</code><code>72</code><code>:4d:f0:3d:ea:</code><code>57</code><code>:d7:</code><code>53</code><code>:6d:</code>

<code>         </code><code>90</code><code>:ca:</code><code>59</code><code>:</code><code>57</code><code>:</code><code>65</code><code>:1b:ec:b5:4d:6f:7e:</code><code>41</code><code>:</code><code>64</code><code>:c1:c6:d4:ab:b1:</code>

<code>         </code><code>01</code><code>:b5:a3:e3:</code><code>67</code><code>:0c:</code><code>59</code><code>:c9:bc:e6:6c:d1:ae:</code><code>20</code><code>:</code><code>05</code><code>:3f:</code><code>85</code><code>:</code><code>87</code><code>:</code>

<code>         </code><code>32</code><code>:f8:bf:3c:9a:ba:e8:c2:e9:fd:e8:b8:</code><code>54</code><code>:</code><code>92</code><code>:</code><code>86</code><code>:</code><code>45</code><code>:</code><code>95</code><code>:ca:</code>

<code>         </code><code>c3:</code><code>53</code><code>:</code><code>13</code><code>:</code><code>41</code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1965404,如需轉載請自行聯系原作者

繼續閱讀