關於加密 解密 認證 證書 等概念

2021-06-21 19:03:17 字數 3050 閱讀 7353

網路資料傳輸第一步的難點就是加密解密,openssl.為這一需求誕生。

openssl初接觸的人恐怕最難的在於先理解各種概念

公鑰/私鑰/簽名/驗證簽名/加密/解密/非對稱加密

因為公鑰加密的資料只有它相對應的私鑰可以解開,所以你可以把公鑰給人和人,讓他加密他想要傳送給你的資料,這個資料只有到了有私鑰的你這裡,才可以解開成有用的資料,其他人就是得到了,也看懂內容.同理,如果你用你的私鑰對資料進行簽名,那這個資料就只有配對的公鑰可以解開,有這個私鑰的只有你,所以如果配對的公鑰解開了資料,就說明這資料是你發的,相反,則不是.這個被稱為簽名.

實際應用中,一般都是和對方交換公鑰,然後你要發給對方的資料,用他的公鑰加密,他得到後用他的私鑰解密,他要發給你的資料,用你的公鑰加密,你得到後用你的私鑰解密,這樣最大程度保證了安全性.

rsa/dsa/sha/md5

非對稱加密的演算法有很多,比較著名的有rsa/dsa ,不同的是rsa可以用於加/解密,也可以用於簽名驗籤,dsa則只能用於簽名.至於sha則是一種和md5相同的演算法,它不是用於加密解密或者簽名的,它被稱為摘要演算法.就是通過一種演算法,依據資料內容生成一種固定長度的摘要,這串摘要值與原資料存在對應關係,就是原資料會生成這個摘要,但是,這個摘要是不能還原成原資料的,嗯....,正常情況下是這樣的,這個演算法起的作用就是,如果你把原資料修改一點點,那麼生成的摘要都會不同,傳輸過程中把原資料給你再給你乙個摘要,你把得到的原資料同樣做一次摘要演算法,與給你的摘要相比較就可以知道這個資料有沒有在傳輸過程中被修改了.

實際應用過程中,因為需要加密的資料可能會很大,進行加密費時費力,所以一般都會把原資料先進行摘要,然後對這個摘要值進行加密,將原資料的明文和加密後的摘要值一起傳給你.這樣你解開加密後的摘要值,再和你得到的資料進行的摘要值對應一下就可以知道資料有沒有被修改了,而且,因為私鑰只有你有,只有你能解密摘要值,所以別人就算把原資料做了修改,然後生成乙個假的摘要給你也是不行的,你這邊用金鑰也根本解不開.

ca/pem/der/x509/pkcs

一般的公鑰不會用明文傳輸給別人的,正常情況下都會生成乙個檔案,這個檔案就是公鑰檔案,然後這個檔案可以交給其他人用於加密,但是傳輸過程中如果有人惡意破壞,將你的公鑰換成了他的公鑰,然後得到公鑰的一方加密資料,不是他就可以用他自己的金鑰解密看到資料了嗎,為了解決這個問題,需要乙個公證方來做這個事,任何人都可以找它來確認公鑰是誰發的.這就是ca,ca確認公鑰的原理也很簡單,它將它自己的公鑰發布給所有人,然後乙個想要發布自己公鑰的人可以將自己的公鑰和一些身份資訊發給ca,ca用自己的金鑰進行加密,這裡也可以稱為簽名.然後這個包含了你的公鑰和你的資訊的檔案就可以稱為證書檔案了.這樣一來所有得到一些公鑰檔案的人,通過ca的公鑰解密了檔案,如果正常解密那麼機密後裡面的資訊一定是真的,因為加密方只可能是ca,其他人沒它的金鑰啊.這樣你解開公鑰檔案,看看裡面的資訊就知道這個是不是那個你需要用來加密的公鑰了.

實際應用中,一般人都不會找ca去簽名,因為那是收錢的,所以可以自己做乙個自簽名的證書檔案,就是自己生成一對金鑰,然後再用自己生成的另外一對金鑰對這對金鑰進行簽名,這個只用於真正需要簽名證書的人,普通的加密解密資料,直接用公鑰和私鑰來做就可以了.

金鑰檔案的格式用openssl生成的就只有pem和der兩種格式,pem的是將金鑰用base64編碼表示出來的,直接開啟你能看到一串的英文本母,der格式是二進位制的金鑰檔案,直接開啟,你可以看到........你什麼也看不懂!.x509是通用的證書檔案格式定義.pkcs的一系列標準是指定的存放金鑰的檔案標準,你只要知道pem der x509 pkcs這幾種格式是可以互相轉化的.

openssl使用

生成rsa金鑰

openssl genrsa -des3 -out prikey.pem

去除掉金鑰檔案保護密碼

openssl rsa -in prikey.pem -out prikey.pem

分離出公鑰

openssl rsa -in prikey.pem -pubout -out pubkey.pem(獲取證書中的公鑰 openssl req -in myreq.pem  -out -pubkey.pem)

對檔案進行簽名

open rsautl -sign -inkey prikey.pem -in a.txt -out sig.dat

驗證簽名

openssl rsautl -verify -inkey prikey.pem -in sig.dat

用公鑰對檔案加密

openssl rsautl -encrypt -pubin -inkey pubkey.pem -in a.text -out b.text

用私鑰解密

openssl rsautl -decrypt -inkey prikey.pem -in b.text

用證書中的公鑰加密 

opensll rsautl -encrypt -certin -inkey cert1.pem -in a.txt

或者生成乙個沒有加密的ca私鑰

openssl genrsa -out ca.key.pem 1024

生成ca對應的csr檔案

openssl req -new -key ca.key.pem -out ca.csr

自簽名openssl x509 -in ca.csr -out ca.cer -req -signkey ca.key.pem -days 7300 -extensions v3_ca

生成der格式的私鑰

openssl pkcs8 -topk8 -inform pem -outform der -in ca.key.pem -out ca.private.der -nocrypt

讀取證書的內容,顯示在螢幕上

openssl x509 -in server.cer -noout -subject  -nameopt rfc2253

將der格式的證書轉成pem格式

openssl  x509  -inform pem  -outform der -in server.der -out server.pem

如果那個命令提示你需要config檔案,你在命令列的最後新增-config c:\wamp\bin\apache\apache2.2.8\conf\openssl.cnf,路徑是你openssl.cnf的路徑,根據你的cnf在**放設定.

加密解密的概念

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...

加密解密 殼的概念

加密解密 殼的概念 殼的作用是為了更好的保護軟體,最大限度使其不在一定時期內被解密 一般來講,殼分為壓縮殼和保護殼兩類 常見的壓縮殼有 upx aspack pecompact fsg和winupack 國產 等。常見的保護殼有 asprotect telock armadillo obsidium...

關於加密解密備忘

在資料傳輸中,同一定遇到unicode一樣,你一定會遇到加密問題.下面說說我的理解.一.對稱演算法,非對稱演算法.有加密就有解密,解密和解密都要用到乙個或多個密碼,俗稱金鑰.金鑰一致的就是對稱演算法,而不一致的就是非對稱演算法.非對稱如同你在乙個門上放了兩把鎖一樣,鑰匙不同,也可以解鎖.對稱,就是一...