Linux 加密安全和私有CA的搭建方法

来源:https://www.cnblogs.com/heyongshen/archive/2022/07/26/16515663.html
-Advertisement-
Play Games

常用安全技術 3A: 認證:身份確認 授權:許可權分配 審計:監控做了什麼 安全通信 加密演算法和協議 對稱加密: 非對稱加密 單向加密:哈希(hash)加密 認證協議 對稱加密: 加密和解密使用的是同一個密鑰 是通過將原始數據分割成若幹塊來逐個進行加密 特點:效率高、速度快 缺點:加密解密使用的密鑰相 ...


常用安全技術

3A:

  • 認證:身份確認
  • 授權:許可權分配
  • 審計:監控做了什麼

安全通信

加密演算法和協議

  • 對稱加密:

  • 非對稱加密

  • 單向加密:哈希(hash)加密

  • 認證協議

對稱加密:

  • 加密和解密使用的是同一個密鑰

  • 是通過將原始數據分割成若幹塊來逐個進行加密

  • 特點:效率高、速度快

  • 缺點:加密解密使用的密鑰相同,需要提前把密鑰發給別人且不能確定數據來自於發送方。

常見的對稱加密演算法:

  • DES:56位加密,把數據切成56Bit一塊來進行加密

  • 3DES:DES的方式加密三次

  • AES:高級加密標準,密鑰長度是可變的。 (128, 192, 256bits)

  • Blowfish,Twofish

  • IDEA,RC6,CAST5

非對稱加密演算法:

  • 密鑰成對出現,加密和解密用的密鑰不相同

  • 通信雙方都需要各自的密鑰和私鑰

  • 特點:公鑰加密、私鑰解密,可以確認數據的來源

公鑰:public key,公開給所有人,

私鑰:secret key,private key  私有的,必須保證其私密性,用於自已加密簽名
可以使用私鑰來加密、也可以使用公鑰來加密。

公鑰和私鑰是成對的,需要使用同一個人的鑰匙才能進行解密

數字簽名:採用私鑰來進行加密、使用公鑰來進行解密。(其他人的到的數據只能使用他的公鑰來解密,這樣就能確定數據的來源性)
非對稱加密的兩種使用場景:
數據安全:加密的數據只有自己能解開 --- 公鑰加密、私鑰解密

數據來源確認:確定數據的來源性 --- 私鑰加密、公鑰解密(實現數字簽名)

缺陷:複雜程度高

常見的非對稱加密常見演算法:

  • RSA:三個發明人首字母簡稱。加密和數字簽名都可以實現

  • DSA(Digital Signature Algorithm):數字簽名演算法,只能做來源確認,不能做數據加密。

  • ECC:橢圓曲線密碼編碼學,比RSA加密演算法使用更小的密鑰,提供相當的或更高等級的安全

對稱加密演算法適合加密大的數據

非對稱加密演算法合適加密小的數據

哈希(hash)演算法

  • 哈希演算法又稱為散列演算法,是一種單向的加密演算法,是不可逆的。

  • 哈希演算法算出來的結果叫做摘要(digest)。

  • 哈希演算法固定時,摘要的長度是固定的大小,內容不同。摘要的內容由數據決定。

  • 通過摘要無法推出原有數據的內容

使用場景:
哈希演算法:用來確認數據的完整性
	類似於指紋,人不同,指紋就不同。得到指紋但是不知道他是誰。
	可以用來檢查數據是否被篡改,因為數據不變,摘要也不會發生改變。

常用的哈希演算法

  • md5: 摘要是128bits字元 已經被破解了

  • sha1: 摘要是160bits字元 已經被破解了

  • sha224、sha256、sha384、sha512

兩個賬號的密碼一樣,但是得到的哈希摘要不一樣,這是因為為了保證信息的安全,在加密密碼之前加鹽(隨機字元串)處理,然後再進行加密。這樣就保證了同樣的密碼,生成的哈希摘要不一樣的原因。1

演算法的組合使用

數據加密的實現

  • 採用對稱和非對稱密鑰的組合使用。

  • 實現數據加密,無法驗證數據完整性和來源
    image

張三先使用對稱加密來加密數據文件,然後使用李四的公鑰來加密這個對稱加密的密鑰文件。最後把這兩個文件發給李四。

李四收到這兩個文件後,先使用自己的私鑰解密加密的密鑰文件得到對稱加密的密鑰,最後使用這個密鑰來解密數據。

數字簽名的實現

不加密數據,可以保證數據來源的可靠性、數據的完整性和一致性
image

張三先使用哈希演算法得到一個摘要,摘要放在數據的後面,然後使用私鑰來加密這個摘要信息(數據沒加密)。然後把數據和數字簽名發給李四。

李四通過張三的公鑰來解密得到加密的摘要信息,然後再對數據使用相同的哈希演算法來進行加密。

最後對比兩個摘要是不是一樣。一樣就確定了數據是張三發來的。

加密和簽名的實現

即實現數據加密,又可以保證數據來源的可靠性、數據的完整性和一致性
方法一:使用這種方法實現,如果數據很大的話。效率就會很低
image

張三加密過程:先把數據使用哈希演算法得到一個摘要,然後使用私鑰進行加密得到簽名。把數據放在這個簽名的後面。
然後再使用接受者的公鑰將他們進行加密。

李四解密過程:首先使用自己的私鑰進行解開得到裡面的簽名和數據。然後使用同樣的哈希演算法對數據進行加密,並且使用張三的公鑰將張三發送過來的摘要解密

最後對比兩個摘要是都相同。

方法二:三種加密演算法的綜合使用
image

張三先使用哈希演算法將數據進行加密,將得到的摘要信息附加到數據後面,在使用自己的私鑰加密摘要信息的到數字簽名。
然後使用對稱加密的方式將他們全部加密,再使用李四的公鑰來加密這個對稱密鑰文件。

李四得到數據以後,首先通過自己私鑰解密得到對稱密鑰,然後再進行對稱解密得到數據和張三的數字簽名。
再通過張三的公鑰來解密這個簽名得到張三生成的摘要信息。再通過同樣的哈希演算法生成一個摘要。對比兩個摘要是否一樣。

密鑰交換

  • 方法一:對稱密鑰發給對方:使用對方的公鑰加密,對方使用私鑰來進行解密。

  • 方法二:DH演算法:生成對稱(會話)密鑰

CA和證書

  • PKI:Public Key Infrastructure 公共密鑰加密體系

  • 簽證機構:CA(Certificate Authority),

  • 註冊機構:RA

  • 證書吊銷列表:CRL,存放被吊銷了的證書

CA的證書頒發過程:

image

A、B直接把公鑰發送給對方,因為存在中間人攻擊,所以誰也不敢信。後面就需要一個權威機構來進行擔保。

A、B的公鑰通過認證機構CA進行簽名(私鑰加密),簽名完以後加入一些其他信息,比如有限期、說明信息等。這樣就行成了一個證書。

例如A和B需要通信的時候,A就把自己的證書發送給通信的對方,B得到這個證書以後,通過CA公鑰的解密得到了A的公鑰。

image

根CA會給子CA頒發證書,子CA再給用戶頒發證書。

例如:B想要解開A發送給他的證書,就需要拿到CA1的公鑰,因為CA1的證書是根CA給的,所以根CA就有CA1的公鑰。B利用根CA個CA1頒發的證書,間接就得到了CA1的公鑰,就可以解開A的證書。

#任何一個主機(windows)都有最根上面的根CA的證書。(系統安裝以後就自帶的)

加密相關的一些安全協議

安全協議SSL\TLS

  • SSL:安全套接層,後來改名為TLS協議。

  • TLS: Transport Layer Security(傳輸層安全性協議),裡面集成和很多功能。

  • TLS是一個通用的協議,可以實現各種不加密協議的加密。

  • TLS協議的作用:用於在兩個通信應用程式之間提供保密性和數據完整性

HTTPS協議

http協議是不加密的,http協議+TLS協議就是https協議
image

HTTPS的通信過程:

服務端配置:會向指定CA組織申請證書

客戶端發送https請求

伺服器將自己的證書發送給客戶端

客戶端校驗證書的有效性(是否是權威CA頒發、是否過期等)

如果校驗通過,客戶端就使用服務端的公鑰(服務端發送過來的證書中有)生成一個隨機的key發送給服務端

服務端使用自己的私鑰來解密得到這個key

後面雙方就可以使用這個key(對稱密鑰來進行數據的傳輸)

openssl

  • openssl是一個開放源代碼的軟體庫包。

  • 應用程式可以使用這個包來實現數據加密、身份確認等功能。

  • 這個包廣泛被應用在互聯網的網頁伺服器上

openssl軟體包的組件:
libcrypto:用於實現加密和解密的庫

libssl:用於實現ssl通信協議的安全庫

openssl:多用途命令行工具  #最長用的一個組件,裡面的核心工具:openssl

Base64編碼

作用:實現編碼轉換的作用。實現把ascii碼中不可見的字元轉換為可見的字元

ascii中可見的字元有64個

ascii碼可見的字元:aA-zZ 0-9 = / 26+26+10+2=64

openssl命令

  • 互動式(預設)

  • 批處理:

查看openssl的版本

互動式:
[root@ubuntu1804 ~]#openssl
OpenSSL> version

批處理式:
root@ubuntu2004:~# openssl version
openssl命令實現對稱加密

enc:對稱加密演算法工具,實現對稱加密和解密

#命令格式
openssl enc -e -des3 -a -salt -in 需要加密的文件 -out 加密後的文件

-e:表示加密

-des3:表示使用3des這種非對稱加密演算法

-a:表示使用Base64進行編碼轉換

-salt:表示加鹽

-in:表示需要加密的文件

-out:後面存放加密生成的結果的文件

解密:把-e換成-d就行了
openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile

-d:表示解密
openssl實現單向哈希加密

dgst:用於數據摘要,摘要就是使用哈希演算法單項加密得到的。

#格式
openssl  使用的加密演算法 需要加密的文件  #dgst可以省略

例如:openssl sha512 filename

#或者使用sha1sum| sha256sum | sha512sum  filename 得到的值是一樣的,因為他們使用的演算法是一樣的。

[root@vms88 ~]# sha1sum aa
f572d396fae9206628714fb2ce00f72e94f2258f  aa
[root@vms88 ~]# openssl sha1 aa
SHA1(aa)= f572d396fae9206628714fb2ce00f72e94f2258f

哈希演算法:md5, sha1, sha256,sha512…
openssl 命令生成用戶密碼

passwd:生成散列密碼。生成各種口令密文

格式:
openssl passwd --help

例如: openssl passwd -6  #會要求輸入兩次密碼且會自動添加對應的鹽,也可以人為指定鹽

#CentOS7也可以使用python來生成sha512加密的口令:

-6:表示採用sha512這種加密算嗎(Centos7上面沒有)
-5:sha256演算法
-1:md5演算法
openssl 生成隨機數

rand:生成隨機位元組

/dev/random:結合硬體信息來生成字元。隨機數用光了就會阻塞程式的執行

/dev/urandom:隨機數也是來自硬體,隨機數用光了會用軟體模擬生成偽隨機數。不會阻塞運行。
#使用rand子命令來實現隨機數的生成。

格式:
openssl rand -base64|-hex NUM

NUM: 表示位元組數,使用-hex,每個字元為十六進位,相當於4位二進位,出現的字元數為NUM*2

openssl rand -base64 10  隨機生成一個10個位元組的符號(位元組不是3的整數倍就會出現等號的情況,=號是用來占位的,四個位元組一組)
範例:隨機生成十個用戶,每個用戶分配一個隨機的密碼。
#!/bin/bash
for i in {1..10};do  #{1..10}表示生成1..10的一個數字列表
	 id user$i  &> /dev/null || useradd user$i #使用id命令查看用戶是否存在,不存在就創建這個用戶
         passwd=`openssl rand -base64 10` #獲取到一個隨機密碼
	 echo $passwd | passwd user$i --stdin &> /dev/null #給生成的用戶指定密碼
	 echo user$i:$passwd >> user.txt #將密碼保存到一個指定文件
done

openssl命令實現 PKI

PKI:Public Key Infrastructure 公共密鑰加密體系

生成私鑰:

openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE [指定的對稱加密演算法]  [NUM_BITS,預設2048]

-out:表示生成私鑰的輸出文件名

# 也可以給生成的私鑰進行堆成加密

對稱加密演算法:man genrsa
-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

解密加密了的私鑰

如果在生成私鑰的時候採用堆成加密的方法加密了,解密的方法是:

#格式

openssl rsa -in 加密了的私鑰文件 -out 解密後的文件
公鑰是隱藏在私鑰內部的,可以通過私鑰的到公鑰。
#從私鑰中提取出公鑰

openssl rsa -in 私鑰文件 -pubout -out 提取出來保存的公鑰文件

建立私有CA實現證書申請頒發

建立私有CA的工具:

  • OpenCA

  • openssl

openssl的配置文件

/etc/pki/tls/openssl.cnf

openssl的這個配置文件主要是配置CA證書頒發和申請的一些配置信息。

配置文件說明
[ ca ]
default_ca      = CA_default            # 預設使用的CA

####################################################################
[ CA_default ]
dir             = /etc/pki/CA           # 存放和CA相關的文件的目錄(CentOS7這個文件預設存在)
certs           = $dir/certs            # 存放頒發的證書  Cert:證書
crl_dir         = $dir/crl              # 存放被吊銷的證書
database        = $dir/index.txt        # 存放ca的索引(需要人為創建)
new_certs_dir   = $dir/newcerts         # 存放新證書的位置
certificate     = $dir/cacert.pem       # ca的自簽名證書
serial          = $dir/serial           # 證書的編號(第一次需要人為創建並編號,後面會自動遞增) serial:連續的
crlnumber       = $dir/crlnumber        # 證書吊銷列表的編號
crl             = $dir/crl.pem          # 證書吊銷列表的文件
private_key     = $dir/private/cakey.pem# CA的私鑰
x509_extensions = usr_cert              # The extensions to add to the cert
name_opt        = ca_default            # Subject Name options
cert_opt        = ca_default            # Certificate field options

policy          = policy_match  #指定使用的匹配策略

# For the CA policy
[ policy_match ]
countryName             = match
stateOrProvinceName     = match
organizationName        = match
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

三種策略:
match匹配:用戶申請證書的時候必須和CA一致(國家,省份,組織)
optional可選
supplied提供

創建私有CA

  • 創建對應文件

  • 給自己頒發自簽名證書

1.創建CA相關文件
#創建CA所需要的文件:資料庫文件和證書索引文件
#database        = $dir/index.txt        # database index file.
#serial          = $dir/serial           # The current serial number

#生成證書索引資料庫文件  只需要創建文件就行,內容不需要手動維護
touch /etc/pki/CA/index.txt

#指定第一個頒發證書的序列號
echo 01 > /etc/pki/CA/serial
2.給CA頒發自己的證書
(1)生成CA的私鑰
#private_key     = $dir/private/cakey.pem# The private key
cd /etc/pki/CA/
(umask 066; openssl genrsa -out private/cakey.pem 2048)
(2)生成CA的自簽名證書
#certificate     = $dir/cacert.pem
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem

#選項說明
-new:生成新證書簽署請求

-x509:表示證書的格式

-key:生成請求時用到的私鑰文件

-days n:證書的有效期限

-out /PATH/TO/SOMECERTFILE: 證書的保存路徑

範例:Centos8搭建私有CA

  • 1.根據openssl對應的配置文件創建對應的文件

  • 2.創建私鑰文件

  • 3.生成自簽名證書

#創建對應的文件(CentOS7上面預設存在)

[root@centos8 ~]#mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}
#index.txt和serial文件在頒發證書時需要使用,所以需要提前創建

[root@centos8 ~]#touch /etc/pki/CA/index.txt
[root@centos8 ~]#echo 01 > /etc/pki/CA/serial
#在指定的位置創建CA的私鑰

[root@centos8 ~]#cd /etc/pki/CA/
[root@centos8 CA]#(umask 066; openssl genrsa -out private/cakey.pem 2048)
#給CA自己頒發自簽名的證書

[root@centos8 ~]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days
3650 -out /etc/pki/CA/cacert.pem
#需要交互輸入國家、省、地區、組織等內容

#查看自簽名證書的信息
[root@centos8 ~]#openssl x509 -in /etc/pki/CA/cacert.pem -noout -text

-in:指定輸入的文件

-noout:不輸出為文件

-text:以文本方式來進行顯示

用戶實現證書的申請

  • 1.用戶生成證書的私鑰,然後利用這個私鑰完成證書的申請

  • 2.利用這個私鑰文件來生成證書申請文件(若是match這種策略。填寫的 國家 省 組織必須一致)

  • 3.將生成的證書申請文件給CA,由CA頒發證書

採用match這種策略這三個選項必須保持一致,如果採用的是option這種策略的話就不用保持一致都可以
#生成私鑰文件

[root@centos8 ~]#(umask 066; openssl genrsa -out /data/app1/app1.key 2048)
#私鑰一般使用key作為尾碼要標識
#利用私鑰生成證書申請文件

[root@centos8 ~]#openssl req -new -key /data/app1/app1.key -out /data/app1/app1.csr

#證書申請文件的尾碼一般都是以csr為尾碼作為標識

#互動式輸入信息的時候 國家 省 組織不需要保持一致,其他隨意
#CA通過證書申請文件來頒發證書
[root@centos8 ~]#openssl ca -in /data/app1/app1.csr -out /etc/pki/CA/certs/app1.crt -days 1000

-in:輸入文件

-out:輸出文件

#查看頒發的證書文件
openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -text

[root@Centos8 CA]# tree /etc/pki/CA
/etc/pki/CA
├── cacert.pem
├── certs
│   └── app1.crt #生成的證書文件
├── crl
├── index.txt
├── index.txt.attr
├── index.txt.old  #前一個文件的備份
├── newcerts
│   └── 01.pem #和app1.crt是同一個東西,自動生成的一個備份文件
├── private
│   └── cakey.pem
├── serial
└── serial.old

#serial:存放的是下一個證書的證書編號
#查看證書的有效性
openssl ca -status 01  #01就是這個證書的標號
將證書相關文件發送到用戶端使用
#cp /etc/pki/CA/certs/app1.crt /data/app1/ #放到用戶端的指定位置
尾碼規定:
.crt #證書文件的標識

.csr #證書申請文件的標識  證書申請完成後,這個證書申請文件就沒啥用了

.key #私鑰的標識  .pem也是私鑰的標識,但是windows不是別pem結尾的文件

一個證書申請文件只能申請一次證書。
實現一個申請文件申請多個證書的方法;

[root@Centos8 CA]# cat index.txt.attr
unique_subject = yes  #把yes變為no就可以了

證書的吊銷

例如:
openssl ca -revoke /etc/pki/CA/newcerts/11.pem 

# 11.pem文件標識要吊銷的證書文件。


#查看證書的狀態 從index這個文件也能看出來  V:標識生效的   R:標識無效的證書
openssl ca -status 11

生成證書吊銷列表文件

公開被吊銷的文件。其他用戶可以獲取已經吊銷了的證書文件列表

#需要創建一個clinumer文件才可以  吊銷證書也需要一個吊銷證書的number 類似於index.txt

#這個文件預設不存在,需要手動創建出來

echo 01 > /etc/pki/CA/crlnumber

openssl ca -gencrl -out /etc/pki/CA/crl.pem   #證書吊銷文件的路徑是約定好的 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、機械手頭部相機與龍門架頭部相機的區別? 上篇文字講解了機械手頭部相機標定原理及方法,中間有提到只適用於龍門架,那為什麼呢? 答:龍門架在運動過程中,固定在龍門架上的移動相機相對與龍門架本身只有平移關係,而架在機械手上的相機存在角度旋轉;機械手在運動過程中機械臂J1與機械臂J2兩個的角度一直在變化 ...
  • 我們知道,WPF有兩大特性:1、使用DirectX渲染;2、解析度無關性:WPF使用與設備解析度無關的單位來度量計算顯示界面的像素點,相同大小的情況下,解析度越高,像素點就會越多。因此在WPF中,使用矢量圖(會根據WPF進行縮放,清晰度不變)比點陣圖(固定像素點,縮放會出現鋸齒,並且占用空間大)更合適 ...
  • 一 使用TryParse,而不是Parse 除string外的所有基元類型,都有兩個將string類型轉型為其本身類型的方法:Parse 和 TryParse。 以double類型為例,這兩個方法最簡單的原型為: public static Double Parse(string s); publi ...
  • 1.反轉的體現 控制反轉,即IoC(Invers of Control),它並不是屬於某個特定編程語言的技術,本質上它是設計框架的一種基本思想。ASP.NET Core中的依賴註入其實就是結合了控制反轉的思想所設計出的一套框架。所以為了更好掌握依賴註入,我們就必須先對控制反轉有一個初步的認識。控制反 ...
  • 在Saas系統下多租戶零腳本分表分庫讀寫分離解決方案 ## 介紹 本文ShardinfCore版本x.6.0.20+ 本期主角: - [`ShardingCore`](https://github.com/dotnetcore/sharding-core) 一款ef-core下高性能、輕量級針對分表 ...
  • 佈局(Panel族) WPF佈局使用的是Panel族佈局控制項,它們均派生自Panel抽象類,主要用於控制UI佈局。 WPF佈局容器 WPF常用的佈局容器及使用方法如下: Grid 網格,類似table表格,可靈活設置行列並放置控制項元素,比較常用 Grid的使用思路 - 聲明Grid容器 <Grid> ...
  • 1.簡介 jq 是一款非常強大的 JSON 命令行處理工具。其官網地址為:https://stedolan.github.io/jq/ 2.安裝 以CentOS為例: 1.線上安裝 yum install -y epel-release && yum install -y jq 2.離線安裝 訪問官 ...
  • Tampermonkey插件Mac版是一款瀏覽器腳本管理插件,支持大多常見瀏覽器,結合腳本大全網站 greasyfork,能夠方便的實現腳本旳一鍵安裝、自動更新、快速啟用等便捷功能,通過用戶腳本可以實現很多實用或有趣的功能。 詳情:Tampermonkey for Mac(油猴Safari瀏覽器插件 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...