本文目錄一覽:
- 1、ASN.1的定義
- 2、如何用java實現asn1編解碼..急急急急急急急急急!!!
- 3、ios支付寶怎麼把私鑰轉換成pkcs8 格式
- 4、總是報找不到方法
- 5、asn1primitive.java在哪個包裡面?
- 6、ASN.1的數據結構
ASN.1的定義
抽象語法定義:
ASN.1是描述在網路上傳輸信息格式的標準方法。它有兩部分:一部分描述信息內數據,數據類型及序列格式;另一部分描述如何將各部分組成消息。它原來是作為X.409的一部分而開發的,後來才自己獨立成為一個標準。ASN.1在OSI的ISO 8824/ITU X.208(說明語法)和ISO 8825/ITU X.209(說明基本編碼規則)規範。
例如:
Report ::= SEQUENCE {
author OCTET STRING,
title OCTET STRING,
body OCTET STRING,
biblio Bibliography
}
在這個例子中,”Report”是由名字類型的信息組成的,而SEQUENCE表示消息是許多數據單元構成的,前三個數據單元的類型是OCTET STRING,而最後一個數據類型見下面的ASN.1語法表示它的意義:
Bibliography ::= SEQUENCE {
author OCTET STRING
title OCTET STRING
publisher OCTET STRING
year OCTET STRING
}
如何用java實現asn1編解碼..急急急急急急急急急!!!
byte[] content=contentStr.getBytes(“asn1”); //如果asn1是一種編碼,這就是將字元串轉換成asn1的二進位
ios支付寶怎麼把私鑰轉換成pkcs8 格式
用途:
pkcs8格式的私鑰轉換工具。它處理在PKCS#8格式中的私鑰文件。它可以用多樣的PKCS#5 (v1.5 and v2.0)和 PKCS#12演算法來處理沒有解密的PKCS#8 PrivateKeyInfo格式和EncryptedPrivateKeyInfo格式。
用法:
[cpp] view plaincopy
openssl pkcs8 [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename]
[-passout arg] [-topk8] [-noiter] [-nocrypt] [-nooct] [-embed] [-nsdb] [-v2 alg] [-v1 alg] [-engine id]
選項說明:
-inform PEM|DER::輸入文件格式,DER或者PEM格式。DER格式採用ASN1的DER標準格式。一般用的多的都是PEM格式,就是base64編碼格式。
-outform DER|PEM:輸出文件格式,DER或者PEM格式。
-in filename:輸入的密鑰文件,默認為標準輸入。如果密鑰被加密,會提示輸入一個密鑰口令。
-passin arg:輸入文件口令保護來源。
-out filename:輸出文件,默認為標準輸出。如果任何加密操作已經執行,會提示輸入一個密鑰值。輸出的文件名字不能和輸入的文件名一樣。
-passout arg:輸出文件口令保護來源。
-topk8:通常的是輸入一個pkcs8文件和傳統的格式私鑰文件將會被寫出。設置了此選項後,位置轉換過來:輸入一個傳統格式的私鑰文件,輸出一個PKCS#8格式的文件。
-noiter:MAC保護計算次數為1。
-nocrypt:PKCS#8密鑰產生或輸入一般用一個適當地密鑰來加密PKCS#8 EncryptedPrivateKeyInfo結構。設置了此選項後,一個不加密的PrivateKeyInfo結構將會被輸出。這個選項一直不加密私鑰文件,在絕對必要的時候才能夠使用。某些軟體例如一些JAVA代碼簽名軟體使用不加密的私鑰文件。
-nooct:這個選項產生的RSA私鑰文件是一個壞的格式,一些軟體將會使用。特別的是,私鑰文件必須附上一個八位組字元串,但是一些軟體僅僅包含本身的結構體沒有使八位組字元串所環繞。不採用八位組表示私鑰。
-embed:這個選項產生的RSA私鑰文件是一個壞的格式。在私鑰結構體中採用嵌入式DSA參數格式。在這個表單中,八位組字元串包含了ASN1 SEQUENCE中的兩種結構:一個SEQUENCE包含了密鑰參數,一個ASN1 INTEGER包含私鑰值。
-nsdb:這個選項產生的RSA私鑰文件是一個壞的格式併兼容了Netscape私鑰文件資料庫。採用NetscapeDB的DSA格式。
-v2 alg:採用PKCS#5 v2.0,並指定加密演算法,默認的是PKCS#8私鑰文件被叫做BpbeWithMD5AndDES-CBC(該演算法用56位元組的DES加密但是在PKCS#5 v1.5中有更加強壯的加密演算法)的加密演算法用口令進行加密。用B-v2選項,PKCS#5 v2.0相關的演算法將會被使用,可以是des3(168位元組)和rc2(128位元組),推薦des3。
-v1 alg:採用PKCS#5 v1.5或pkcs12,並指定加密演算法。可採用的演算法見下面。
-engine id:指定硬體引擎。
注意:
加密了的PEM編碼PKCS#8文件表單用下面的頭部和尾部:
—–BEGIN ENCRYPTED PRIVATE KEY—–
—–END ENCRYPTED PRIVATE KEY—–
未加密的表單用:
—–BEGIN PRIVATE KEY—–
—–END PRIVATE KEY—–
跟傳統的SSLeay演算法相比,用PKCS#5 v2.0系列的演算法加密私鑰,有更高的安全性以及迭代次數。於是附加的安全性是經過深思熟慮的。
默認的加密演算法僅僅是56位元組的,是因為它是PKCS#8所支持的最好的方法。
有一些軟體使用PKCS#12基於密鑰的加密演算法來加密PKCS#8格式的私鑰:它們會自動的處理但是沒有選項來操作。
在PKCS#8格式中,有可能的是輸出DER編碼格式的經過加密的私鑰文件,是因為加密的詳細說明包含在DER等級中,相反的是傳統的格式包含在PEM鄧麗中。
PKCS#5 v1.5和 PKCS#12 演算法:
各種各樣的演算法可以被選項-v1所使用。包含PKCS#5 v1.5和 PKCS#12 演算法。詳細描述如下:
BPBE-MD2-DES PBE-MD5-DES:這兩個演算法包含在PKCS#5 v1.5中。它們僅僅提供56位元組的保護,加密演算法用DES。
BPBE-SHA1-RC2-64 PBE-MD2-RC2-64 PBE-MD5-RC2-64 PBE-SHA1-DES:它們在傳統的PKCS#5 v1.5中沒有被提到,但是它們用同樣地密鑰引出演算法,被一些軟體所支持。在PKCS#5 v2.0中所提到。它們使用64位元組的RC2以及56位元組的DES。
BPBE-SHA1-RC4-128 PBE-SHA1-RC4-40 PBE-SHA1-3DES PBE-SHA1-2DES PBE-SHA1-RC2-128 PBE-SHA1-RC2-40:它們是PKCS#12基於密鑰的加密演算法,它們允許使用高強度的加密演算法,例如3des或128位的RC2。
實例:
用3des演算法將傳統的私鑰文件轉換為PKCS#5 v2.0:
[cpp] view plaincopy
openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem
用PKCS#5 1.5兼容的DES演算法將私鑰文件轉換為pkcs8文件:
[html] view plaincopy
openssl pkcs8 -in ocspserverkey.pem -topk8 -out ocspkcs8key.pem
用PKCS#12兼容的3DES演算法將私鑰文件轉換為pkcs8文件:
[html] view plaincopy
openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES
讀取一個DER格式加密了的PKCS#8格式的私鑰:
[cpp] view plaincopy
openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem
轉換一個PKCS#8格式的私鑰到傳統的私鑰:
[cpp] view plaincopy
openssl pkcs8 -in pk8.pem -out key.pem
pkcs8中的私鑰以明文存放:
[html] view plaincopy
openssl pkcs8 -in ocspserverkey.pem -topk8 -nocrypt -out ocspkcs8key.pem
標準:
PKCS#5 v2.0的測試向量的實現是以通告的形式用高強度的迭代次數演算法3DES、DES和RC2來加密的。很多人要確認能夠解密產生的私鑰。
PKCS#8格式的DSA私鑰文件沒有備註文件中的:在PKCS#11 v2.01中的11.9節被隱藏了的。OpenSSL的默認DSA PKCS#8私鑰格式隱藏在這個標準中。
BUGs:
必須有一個選項列印使用的加密演算法的其他詳細細節,例如迭代次數。
PKCS#8用3DES和PKCS#5 v2.0必須是默認的私鑰文件:目前為了命令的兼容性。
總是報找不到方法
要把項目所需的Jar包都上傳到相應的目錄中。
還有就是,你檢查是否在代碼中使用了絕對路徑。
上網的話,必須用相對路徑,多數都這情況。
asn1primitive.java在哪個包裡面?
java沒有utils這個類,除非是同事寫的,沒有告訴自己,所以找不到
不過java有 java.util這個package。
包含集合框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字元串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期時間工具等各類常用工具包
ASN.1的數據結構
ASN.1 還能夠定義如下的數據結構類型:
結構 ( SEQUENCE )
列表 ( SEQUENCE OF )
類型選擇 ( CHOICE )
原創文章,作者:SMCKD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/315718.html