參考:
== begin ==
公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用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基本原理以及生成證書
公司乙個專案要進行交易資料傳輸,因為這個專案銀行那邊也是剛剛開始啟動,所有的支援只有乙個傳輸欄位的說明文件,好吧,總的有人做事不是嘛,於是介面開發正式展開,第一步的難點就是加密解密,我選擇使用openssl.openssl初接觸的人恐怕最難的在於先理解各種概念 公鑰 私鑰 簽名 驗證簽名 加密 解密...
證書鏈的基本原理
pki public key infrastructure 規範體系,包含 問題 數字簽名技術 基於公鑰密碼技術。ca 數字簽名兩個過程 簽發證書的過程 撰寫證書元資料 使用通用的hash 演算法 如sha 256 對證書元資料計算生成數字摘要使用issuer 的私鑰對該數字摘要進行加密,生成乙個加...
mysql的基本原理 Mysql 基本原理
mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...