OpenSSL之八 檔案編碼格式

2021-10-10 15:56:05 字數 2433 閱讀 1820

金鑰編碼

其他編碼

asn.1(abstract syntax notation dotone),抽象語法標記1。是定義抽象資料型別形式的標準,是用於描述資料表示、表示、傳輸、編碼的記法。

asn.1是一種結構化的數字物件描述語言,它包括了兩個部分:

資料描述語言(iso8824)

資料編碼規則(iso8825)

asn.1的資料描述語言標準允許使用者自定義基本資料型別,並可以通過簡單的資料型別組成更複雜的資料型別。

asn.1提供了多種資料編碼方法:

目前經常被採用的是ber編碼,但是ber編碼具有編碼不唯一的性質,也就是說,乙個相同的物件通過ber編碼可能會產生幾種不同的編碼資料。所以,在 openssl和其他密碼學相關軟體中經常使用ber的乙個子集der。對於每乙個asn.1物件,使用der編碼得出的二進位制編碼資料是唯一的。

pem編碼全稱是privacy enhanced mail,是一種保密郵件的編碼標準。通常來說,對資訊的編碼過程基本如下:

(1)資訊轉換為ascii碼或其他編碼方式,比如採用der編碼。

(2)使用對稱加密演算法加密經過編碼的資訊。

(3)使用base64對加密後的資訊進行編碼。

(4)使用一些頭定義對資訊進行封裝,主要包含了進行正確解碼需要的資訊,頭定義的格式如下:

proc-type,4

:encrypted

dek-info:cipher-name

,ivec

第乙個頭資訊標註了該檔案是否進行加密,該頭資訊的值包括encrypted(資訊已經加密和簽名),mic-only(資訊經過數字簽名但沒有加密),mic-clear(資訊已經經過數字簽名但是沒有加密,也沒有進行編碼,可使用非pem格式閱讀),以及clear;第二個頭資訊標準了加密的演算法及對稱加密塊演算法使用的初始向量。

(5)在這些資訊的前面加上如下形式頭標註資訊:

-----begin privacy-enhanced message-----

在這些資訊的後面加上如下形式尾標註資訊

-----end privacy-enhanced message-----

openssl的pem編碼基本上是基於der編碼之上的,也就是說,它在上述第一步採用的是der編碼,所以,從本質上來說,openssl的pem編碼就是在der編碼基礎上進行base64編碼,然後新增一些頭尾資訊組成的。

資料編碼格式提供了封裝資料的基本方法,但對於具體的資料物件,比如證書,根據內容不同,需要更加具體的表達方式。

x.509證書僅包含公鑰資訊而沒有私鑰資訊,可以公開發布,一般不需要加密。x.509證書常用字尾由der、cer、crt。

..

....

(此處省略證書可讀資訊)

....

..-----begin certicicate-----

....

..(此處省略base64編碼的證書資料)

....

..-----end certicicate-----

x.509頭尾格式還可以是:

-----begin x.509 certicicate-----

-----end x.509 certicicate-----

-----begin trusted certicicate-----

-----end trusted certicicate-----

x.509指令:

x509
pkcs#12可以包含乙個或者多個證書,並且還可以包含證書對應的私鑰。

一般情況下,pkcs#12證書私鑰需要經過加密,金鑰需要使用者輸入口令產生,證書字尾一般為p12或pfx。

pkcs#12證書可以轉換為x.509證書和私鑰。

pkcs#12指令:

pkcs12
pkcs#7可以封裝乙個或多個x.509證書或者pkcs#6證書,並且可以包含crl資訊。

pkcs#7證書只包含公鑰資訊,但它可以包含多個證書,x.509證書和pkcs#7證書之間可以進行轉換,證書字尾一般為p7b。

pkcs#7指令:

pkcs7

crl2pkcs7

openssl提供了pem和der兩種編碼方式來對金鑰進行編碼。der編碼儲存的金鑰不可讀,pem經過base64編碼。公開金鑰的私鑰pem編碼時需要加密,生成的pem檔案會增加一些頭資訊,包括金鑰加密狀態、使用的加密演算法以及初始向量等。

-----begin x.509 crl-----

-----end x.509 crl-----

Python入門(八) 檔案處理

檔案操作 python之所以在近幾年十分紅火,其中乙個最重要的原因就是它在資料分析和科學計算上所展現的獨特魅力。而要分析挖掘資料,就意味著我們是對資料檔案進行操作。因此,下面我們學習下檔案型別和資料維度,以及如何運算元據檔案。由於文字檔案存在編碼,所以可以看作是儲存在磁碟上的長字串。適用於例如 tx...

Python基礎 八 檔案操作

在工作中常常會涉及到檔案操作,例如日誌記錄,生成測試報告等。python常用的檔案操作主要包括開啟 讀取,寫入 關閉。一 開啟檔案 使用open file,mode,encoding 方法,其中 例如 f open file test.txt mode r encoding utf 8 open 方...

CSharp學習筆記之八 檔案的讀寫

在我們的程式的編寫過程中,總避免不了對檔案的讀寫,比如說要讀取乙個軟體的配置,這時候不就需要我麼來設計的檔案的讀寫麼,但是對於c 來說,是如何對檔案進行讀寫的呢。下面的我們來看乙個列子 class test catch system.exception ex trycatch system.exce...