openssl基本原理以及生成證書

2021-12-30 00:51:03 字數 2253 閱讀 8836

公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用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這幾種格式是可以互相轉化的.

== end ==

為了方便理解,我畫了乙個圖,如下:

參考:== end 參考==

請一定嚴格根據裡面的步驟來,待實驗成功後,修改你自己想要修改的內容。我就是一開始沒有安裝該填寫的來,結果生成的證書就無法配對成功。

openssl基本原理 生成證書

參考 begin 公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用openssl.openssl初接觸的人恐怕最難的在於先理解各種概念 公鑰 私鑰 簽名 驗...

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

8 2 1 基本原理

乙個舞台動畫物件在包含許多舞台資訊 出現在何處,佔多大面積,處在什麼角度,是否可見 這些資訊分別儲存在動畫物件的屬性中。在 中讀取這些屬性可以了解物件的位置 大小 角度等狀態資訊 修改這些屬性可以改變物件的位置 大小 角度等狀態。如果從資料的角度去理解,動畫就是在固定時間間隔點不斷修改動畫物件某項屬...