30的魔数——DER格式揭示我们的密码学魔力

本文深入探讨了DER格式在密码学中的应用,特别是其在公钥、私钥和数字证书中的编码作用。文章详细解释了DER格式的结构,包括SEQUENCE、OBJECT IDENTIFIER和BIT STRING等基本类型,并通过OpenSSL工具演示了如何解析DER编码的密钥和签名,以及如何使用WolfSSL库进行DER格式的解析和分析。

30 的神奇数字——DER 格式揭示了我们的密码学魔法

在数字取证中,你会了解到有很多神奇数字 [这里],例如:

这些神奇数字通常出现在文件的前几个字节中,因此我们可以确定文件的可能类型和格式。如果我们正在搜索密码学工件,我们通常在文件开头寻找的一个常见字节值是 0x30。因此,让我们检查一下 Distinguished Encoding Rules (DER) 格式。虽然许多文件可能具有 0x30 的起始值,但我们可以检查它之后的字节,以查看它是否是密码学工件。

PEM 和 DER

关于密码学的一大优点是,我们设法迁移了我们的方法。当我们引入新方法(例如使用 ECC)或方法已弃用(例如对于 DES)时,通常需要这种迁移。因此,我们有方法来定义新方法,这些方法可以很容易地被应用程序解释。其核心是用于定义密码学的 DER 格式。

我们需要以可移植的格式分发我们的公钥、私钥和数字证书。最常见的形式之一是 ASN.1(Abstract Syntax Notation One,抽象语法表示法一)的 Distinguished Encoding Rules (DER) 编码。总的来说,它是编码数据的真正二进制表示。

另一种常见格式是 PEM,它将二进制编码转换为文本可读格式。使用 PEM,我们可以使用 Base64 ASCII 格式对密码学信息进行编码,并使用“ — — -BEGIN RSA PRIVATE KEY — — -”和“ — — -END RSA PRIVATE KEY — — -”的纯文本头和尾,而使用 DER,我们有二进制格式。

私钥示例 [这里]:

-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgbWQGAmoVJCTfv6dE
N/55Al6OHA3DQ7GHesXij/WPQ0ShRANCAARidNTJiKD+rwqAITZNihCI6rWucirb
XMr2lKGvXPHgeK9uBp5UQ14kW7SrMSh3hthlSOJuuSENzK9K0OmVm07K
-----END PRIVATE KEY-----

公钥 [这里]:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYnTUyYig/q8KgCE2TYoQiOq1rnIq
21zK9pShr1zx4HivbgaeVENeJFu0qzEod4bYZUjibrkhDcyvStDplZtOyg==
-----END PUBLIC KEY-----

证书 [这里]:

-----BEGIN CERTIFICATE-----
MIIBaTCCAQ+gAwIBAgIBBDAKBggqhkjOPQQDAjAYMRYwFAYDVQQDDA1BU2VjdXJp
dHlzaXRlMB4XDTE1MTIzMTIzNTk1OVoXDTI1MTIzMTIzNTk1OVowFTETMBEGA1UE
AwwKV2ViIHNlcnZlcjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGJ01MmIoP6v
CoAhNk2KEIjqta5yKttcyvaUoa9c8eB4r24GnlRDXiRbtKsxKHeG2GVI4m65IQ3M
r0rQ6ZWbTsqjTTBLMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMC4GA1UdHwQn
MCUwI6AhoB+GHWh0dHA6Ly9ib2IuYXNlY3VyaXR5c2l0ZS5jb20vMAoGCCqGSM49
BAMCA0gAMEUCIQDJykBnped+C6r7SbhYFDMemMoUZ/6JaVmhGdOEnr8XxQIgVbhD
xb8HiBvve7BxHnyHv7DREt7nE8fI3Y4IPu80ADw=
-----END CERTIFICATE-----

DER 格式

本文将介绍 DER 格式,并使用 OpenSSL 解码十六进制字符串及其内容。总的来说,ASN.1 用于定义抽象类型和值。最基本的类型之一是 SEQUENCE,它是一个或多个类型的有序集合。在 DER 中,SEQUENCE 用标签 “30” 标识,后跟一个字节值,用于表示定义的对象长度。其他常见类型是 OBJECT IDENTIFIER(对象标识符,其标签为 “06”)和 BIT STRING(位字符串,其标签为 “03”)。

对象标识符标签用于定义所使用的密码学方法。ECC 加密的示例标识符是 “ 1.2.840.10045.2.1”,其中 1 是 OSI,2 是成员机构,840 是美国 (ANSI),10045 是 “ansi-X9–62”,而 “2” 是密钥类型 [1]。其他常见算法包括:“1.2.840.113549.1.1.1” (X509 RSA)、“1.2.840.10040.4.1” (X509 Digital Signature Standard -DSS) 和 “1.2.840.10046.2.1” (Diffie-Hellman — DH)。以下是对象 ID 的十六进制序列示例,其中我们有 “06” 标签,后跟一个七个字节的标识符 (“07”),然后是七个字节的对象 ID (“2a8648ce3d0201”):

06 07 2a8648ce3d0201  # 对象 ID - 长度为 7 字节:1.2.840.10045.2.1 (ECC)

我们还可以在对象标识符中定义曲线类型,其中我们具有 iso(1)、member-body(2)、us(840)、ansi-X9–62(10045)、curves(3)、prime(1) 的形式。例如,1.2.840.10045.3.1.7 定义了 ECDSA P-256。其他示例包括 SECP192R1 (“1.2.840.10045.3.1.1”)、SECP224R1 (“1.3.132.0.33”)、SECP256K1 (“1.3.132.0.10”)、SECP256R1 (“1.2.840.10045.3.1.7”)、SECP384R1 (“1.3.132.0.34”)、SECP521R1 (“1.3.132.0.35”) 和 BRAINPOOLP256R1 (“1.3.36.3.3.2.8.1.1.7”)。一个示例,其中我们有一个标识符 (“06”),后跟字节数标识符 (“08”) 和八个字节的对象 ID (“2a8648ce3d030107”):

06 08 2a8648ce3d030107  # 对象 ID - 长度为 8 字节:1.2.840.10045.3.1.7 (ECDSA P256)

对于 “03” 标签,我们定义了密钥的位流。在下文中,我们有 “03”,后跟密钥的字节数(66 个字节),然后在此之后定义密钥(64 个字节):

03 42 # 位流 - 0x42(长度为 66 字节)
0004 # 标识公钥
2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838 # 标识公钥 x 坐标
c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e # 标识公钥 y 坐标

ECC 公钥的 DER 格式的十六进制字符串示例:

3059301306072a8648ce3d020106082a8648ce3d030107034200042927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513

然后我们可以使用 [这里] 来分解它:

30 59 # 序列长度 0x59 - 长度为 91 字节
30 13 # 序列长度 0x13 - 长度为 21 字节
06 07 2a8648ce3d0201  # 对象 ID - 长度为 7 字节 - 1.2.840.10045.2.1 (ECC)
06 08 2a8648ce3d030107  # 对象 ID - 长度为 8 字节 - 1.2.840.10045.3.1.7 (ECDSA P256)
03 42 # 位流 - 0x42 (长度为 66 字节)
0004 # 标识公钥
2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838 # 标识公钥 x 坐标
c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e # 标识公钥 y 坐标

如果我们使用 OpenSSL,我们可以使用 xdd 将十六进制字符串转换为字节数组,然后解析 ASN1。

echo 3059301306072a8648ce3d020106082a8648ce3d030107034200042927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e
   | xxd -r -p | openssl asn1parse -inform der

0:d=0  hl=2 l=  89 cons: SEQUENCE
    2:d=1  hl=2 l=  19 cons: SEQUENCE
    4:d=2  hl=2 l=   7 prim: OBJECT            :id-ecPublicKey
   13:d=2  hl=2 l=   8 prim: OBJECT            :prime256v1
   23:d=1  hl=2 l=  66 prim: BIT STRING
      0000 - 00 04 29 27 b1 05 12 ba-e3 ed dc fe 46 78 28 12   ..)'........Fx(.
      0010 - 8b ad 29 03 26 99 19 f7-08 60 69 c8 c4 df 6c 73   ..)......`i...ls
      0020 - 28 38 c7 78 79 64 ea ac-00 e5 92 1f b1 49 8a 60   (8.xyd.......I.`
      0030 - f4 60 67 66 b3 d9 68 50-01 55 8d 1a 97 4e 73 41   .`gf..hP.U...NsA
      0040 - 51 3e                                             Q.

我们可以看到位字符串以 “00 04” 开头,后跟公钥的 x 坐标 (0x2917 …) 和 y 坐标 (0xc778…)。

RSA 密钥的 ASN1 解析

对于 RSA 密钥,我们可以生成一个 512 位密钥对,然后使用以下命令将其转换为十六进制 DER 字符串:

(base) billbuchanan@ASecuritySite openssl % openssl genrsa 512
    | openssl rsa -outform der | xxd -plain
writing RSA key
30820154020100300d06092a864886f70d01010105000482013e3082013a
020100024100beeaa2dd3aa43a38904f57707465532c31ffe5904e2335d5
4a26b7ba046846a165cd72090e0b109cae3fc5e95e0c89d7531ffeaad319
3b0e9dae357481fac16102030100010240632216fb64edcdc57d39959fb0
f0c42558b9158cbee60d97f8eeedcbcb6a11f1e99d45890de936eb167c53
f45876d2fed8f31a889ab6029cc04b6d09e2657681022100f6cb29b3286f
46e3f025d9e71afb84aeb1e19fe874378d490e73ef2a3fab8ae9022100c6
09db5bb1906090e80d79d69109ec37359bafc06b9ed9fff97a5bcb9c1f07
b902201fdf7d333635a8e22751bc22acc96f0960cfd2e7229b4a13f559e3
b9811f96810221008e92de17df77ffed9302d0aa86f4cbd8db81604079ba
7d5be9f20b5044ef9a1102203092b0733f508f646ec80520db410860ebe7
d4bb15db8ad3703666b57b41fe75

对于 1,024 位模数,我们使用以下命令生成密钥对:

3082013a020100024100a53c172810b45f94cb1edbd6a7eeffd5fa94b4c692d00bec0760bc53dff8b3034ed82f92debb553ae6fc0663ab90247e71af25a7643ad055cec78345b92c36c7020301000102403de24885efe3ae1c8b0a6ea97151d8ad6a610167919aabac6582fc65a96f7a937b40f06c5594f0fe1a74b957e731a021f9b214bfcb7fecfee328a9b041eb8d41022100da6a12118066136f8b1478dd78625bb80ed2ffa6b525a0cbc89058a37040faa7022100c1ab44c7fd1fcc554f4143072361f0bf064619b25fcc54064def8692da5006e102203bf114585d46a65adc6e97e5201ece512b30591d2565d845551bd857b27d02cd02201acc03dc581dca3c1397481af8be587d55f4e521553804784ad8559a84328681022100bd24bc374ab656a11b2d531ac4eaebb5dd013848c654268d453942a39248bc32

如果我们进行解析,我们得到 [这里]:

echo 3082013a020100024100a53c172810b45f94cb1edbd6a7eeffd5fa94b4c692d00bec0760bc53dff8b3034ed82f92debb553ae6fc0663ab90247e71af25a7643ad055cec78345b92c36c7020301000102403de24885efe3ae1c8b0a6ea97151d8ad6a610167919aabac6582fc65a96f7a937b40f06c5594f0fe1a74b957e731a021f9b214bfcb7fecfee328a9b041eb8d41022100da6a12118066136f8b1478dd78625bb80ed2ffa6b525a0cbc89058a37040faa7022100c1ab44c7fd1fcc554f4143072361f0bf064619b25fcc54064def8692da5006e102203bf114585d46a65adc6e97e5201ece512b30591d2565d845551bd857b27d02cd02201acc03dc581dca3c1397481af8be587d55f4e521553804784ad8559a84328681022100bd24bc374ab656a11b2d531ac4eaebb5dd013848c654268d453942a39248bc32 | xxd -r -p | openssl asn1parse -inform der
0:d=0  hl=4 l= 314 cons: SEQUENCE
    4:d=1  hl=2 l=   1 prim: INTEGER           :00
    7:d=1  hl=2 l=  65 prim: INTEGER           :A53C172810B45F94CB1EDBD6A7EEFFD5FA94B4C692D00BEC0760BC53DFF8B3034ED82F92DEBB553AE6FC0663AB90247E71AF25A7643AD055CEC78345B92C36C7
   74:d=1  hl=2 l=   3 prim: INTEGER           :010001
   79:d=1  hl=2 l=  64 prim: INTEGER           :3DE24885EFE3AE1C8B0A6EA97151D8AD6A610167919AABAC6582FC65A96F7A937B40F06C5594F0FE1A74B957E731A021F9B214BFCB7FECFEE328A9B041EB8D41
  145:d=1  hl=2 l=  33 prim: INTEGER           :DA6A12118066136F8B1478DD78625BB80ED2FFA6B525A0CBC89058A37040FAA7
  180:d=1  hl=2 l=  33 prim: INTEGER           :C1AB44C7FD1FCC554F4143072361F0BF064619B25FCC54064DEF8692DA5006E1
  215:d=1  hl=2 l=  32 prim: INTEGER           :3BF114585D46A65ADC6E97E5201ECE512B30591D2565D845551BD857B27D02CD
  249:d=1  hl=2 l=  32 prim: INTEGER           :1ACC03DC581DCA3C1397481AF8BE587D55F4E521553804784AD8559A84328681
  283:d=1  hl=2 l=  33 prim: INTEGER           :BD24BC374AB656A11B2D531AC4EAebb5DD013848C654268D453942A39248BC32

序列中的值是 N, e, d, p, q,其中:

N=A53C172810B45F94CB1EDBD6A7EEFFD5FA94B4C692D00BEC0760BC53DFF8B3034ED82F92DEBB553AE6FC0663AB90247E71AF25A7643AD055CEC78345B92C36C7

e=010001

d=3DE24885EFE3AE1C8B0A6EA97151D8AD6A610167919AABAC6582FC65A96F7A937B40F06C5594F0FE1A74B957E731A021F9B214BFCB7FECFEE328A9B041EB8D41

p=DA6A12118066136F8B1478DD78625BB80ED2FFA6B525A0CBC89058A37040FAA7

q=C1AB44C7FD1FCC554F4143072361F0BF064619B25FCC54064DEF8692DA5006E1

我们看到 N 有 128 个字节,因此是 1,024 位长,而 p 和 q 是 512 位长。如果我们把 p 乘以 q,我们得到模数值:

>>> p=int("DA6A12118066136F8B1478DD78625BB80ED2FFA6B525A0CBC89058A37040FAA7",16)
>>> q=int("C1AB44C7FD1FCC554F4143072361F0BF064619B25FCC54064DEF8692DA5006E1",16)
>>> hex(p*q)
'0xa53c172810b45f94cb1edbd6a7eeffd5fa94b4c692d00bec0760bc53dff8b3034ed82f92debb553ae6fc0663ab90247e71af25a7643ad055cec78345b92c36c7'

它等于模数(N)。

ECC 密钥的 ASN.1 解析

我们可以使用以下命令生成一个 secp256k1 私钥(-noout 选项不生成 ECC 参数)

% openssl ecparam -genkey -name secp256r1 -outform der -noout | xxd -plain
using curve name prime256v1 instead of secp256r1
3077020101042037c67057c9350ce42d9aa365aa874c2f62db43bf309667
a25e5cae0a958c1065a00a06082a8648ce3d030107a144034200048bd1ff
01a5fe5cda52970c65d0cf41265391b4520d7709832a71f1af4796b8234f
212b7d8840ae45ee1f98c8b65e2d84fe64c6e5d709a206a1388f66eff58b
51

如果我们进行解析,我们得到 [这里]:

DER string: 3077020101042037c67057c9350ce42d9aa365aa874c2f62db43bf309667a25e5cae0a958c1065a00a06082a8648ce3d030107a144034200048bd1ff01a5fe5cda52970c65d0cf41265391b4520d7709832a71f1af4796b8234f212b7d8840ae45ee1f98c8b65e2d84fe64c6e5d709a206a138```c
unsigned char* data=malloc(strlen(hexstring) / 2);
    int len= strlen(hexstring) / 2;
    int rtn= hexStringToByteArray(hexstring, data,len);

    wc_Asn1PrintOptions_Init(&opt);
    wc_Asn1PrintOptions_Set(&opt, ASN1_PRINT_OPT_INDENT, 1);
    wc_Asn1_Init(&asn1);
    wc_Asn1_SetFile(&asn1, stdout);

    printf("DER string: %s\n",hexstring);
    wc_Asn1_PrintAll(&asn1, &opt, data, len);

    return 0;
}

对于 ECDSA 签名,我们得到一个 r 值 (0xe4e87c417196c6e5cd63f93e94929ccda6d04fc0a7446922baf3070e854ec4f4) 和一个 s 值 (0xa1ecd098008329de9bc93fb2ded6aaceecc921f7183d6b3cfc673b3ef8af219e [ 这里]:

DER string: 3046022100e4e87c417196c6e5cd63f93e94929ccda6d04fc0a7446922baf3070e854ec4f4022100a1ecd098008329de9bc93fb2ded6aaceecc921f7183d6b3cfc673b3ef8af219e
   0: 2 [  70]  (0) SEQUENCE
   2: 2 +  33   (1)  INTEGER         :00e4e87c417196c6e5cd63f93e94929ccda6d04fc0a7446922baf3070e854ec4f4
  37: 2 +  33   (1)  INTEGER         :00a1ecd098008329de9bc93fb2ded6aaceecc921f7183d6b3cfc673b3ef8af219e

对于 secp224k1 私钥,我们有一个私钥 0x18fc394a5ad3ac9d0b0dbd43eba6e2648048218717bc7d4b6430fa2e [ 这里]:

DER string: 302A020101041C18FC394A5AD3AC9D0B0DBD43EBA6E2648048218717BC7D4B6430FA2EA00706052B81040021
   0: 2 [  42]  (0) SEQUENCE
   2: 2 +   1   (1)  INTEGER         :01
   5: 2 +  28   (1)  OCTET STRING    :18fc394a5ad3ac9d0b0dbd43eba6e2648048218717bc7d4b6430fa2e
  35: 2 [   7]  (1)  [0]
  37: 2 +   5   (2)   OBJECT ID       :secp224r1

对于 512 位的 RSA 密钥,我们定义 ver (00)、N (0xa53c172810b45f94cb1edbd6a7eeffd5fa94b4c692d00bec0760bc53dff8b3034ed82f92debb553ae6fc0663ab90247e71af25a7643ad055cec78345b92c36c7)、e (0x010001)、d (0x3de24885efe3ae1c8b0a6ea97151d8ad6a610167919aabac6582fc65a96f7a937b40f06c5594f0fe1a74b957e731a021f9b214bfcb7fecfee328a9b041eb8d41)、p1、p2、ex1、ex2 和 co 的值 [ 这里]:

DER string: 3082013a020100024100a53c172810b45f94cb1edbd6a7eeffd5fa94b4c692d00bec0760bc53dff8b3034ed82f92debb553ae6fc0663ab90247e71af25a7643ad055cec78345b92c36c7020301000102403de24885efe3ae1c8b0a6ea97151d8ad6a610167919aabac6582fc65a96f7a937b40f06c5594f0fe1a74b957e731a021f9b214bfcb7fecfee328a9b041eb8d41022100da6a12118066136f8b1478dd78625bb80ed2ffa6b525a0cbc89058a37040faa7022100c1ab44c7fd1fcc554f4143072361f0bf064619b25fcc54064def8692da5006e102203bf114585d46a65adc6e97e5201ece512b30591d2565d845551bd857b27d02cd02201acc03dc581dca3c1397481af8be587d55f4e521553804784ad8559a84328681022100bd24bc374ab656a11b2d531ac4eaebb5dd013848c654268d453942a39248bc32
   0: 4 [ 314]  (0) SEQUENCE
   4: 2 +   1   (1)  INTEGER         :00
   7: 2 +  65   (1)  INTEGER         :00a53c172810b45f94cb1edbd6a7eeffd5fa94b4c692d00bec0760bc53dff8b3034ed82f92debb553ae6fc0663ab90247e71af25a7643ad055cec78345b92c36c7
  74: 2 +   3   (1)  INTEGER         :010001
  79: 2 +  64   (1)  INTEGER         :3de24885efe3ae1c8b0a6ea97151d8ad6a610167919aabac6582fc65a96f7a937b40f06c5594f0fe1a74b957e731a021f9b214bfcb7fecfee328a9b041eb8d41
 145: 2 +  33   (1)  INTEGER         :00da6a12118066136f8b1478dd78625bb80ed2ffa6b525a0cbc89058a37040faa7
 180: 2 +  33   (1)  INTEGER         :00c1ab44c7fd1fcc554f4143072361f0bf064619b25fcc54064def8692da5006e1
 215: 2 +  32   (1)  INTEGER         :3bf114585d46a65adc6e97e5201ece512b30591d2565d845551bd857b27d02cd
 249: 2 +  32   (1)  INTEGER         :1acc03dc581dca3c1397481af8be587d55f4e521553804784ad8559a84328681
 283: 2 +  33   (1)  INTEGER         :00bd24bc374ab656a11b2d531ac4eaebb5dd013848c654268d453942a39248bc32

我在这里创建了很多其他的例子:

ASN.1: 使用 WolfSSL 和 C 的 DER

参考文献

[1] RFC 3279, Internet X.509 公钥基础设施证书和证书吊销列表 (CRL) 配置文件的算法和标识符 [ 这里]

对象 ID 列表:

Hashing:
MD2 1.2.840.113549.2.2
MD5 1.2.840.113549.2.5
SHA-1   1.3.14.3.2.26
SHA-224 2.16.840.1.101.3.4.2.4
SHA-256 2.16.840.1.101.3.4.2.1
SHA-394 2.16.840.1.101.3.4.2.2
SHA-512 2.16.840.1.101.3.4.2.3Public key:RSA Encryption 1.2.840.113549.1.1.1
DSA 1.2.840.10040.4.1
Diffie-Hellman (dhPublicNumber) 1.2.840.10046.2.1
ECC (ecPublicKey)   1.2.840.10045.2.1
md2WithRsaEncryption    1.2.840.113549.1.1.2Signatures:
md5WithRsaEncryption    1.2.840.113549.1.1.4
sha1WithRsaEncryption   1.2.840.113549.1.1.5
sha224WithRsaEncryption     1.2.840.113549.1.1.14
sha256WithRsaEncryption 1.2.840.113549.1.1.11
sha384WithRsaEncryption 1.2.840.113549.1.1.12
sha512WithRsaEncryption 1.2.840.113549.1.1.13
dsaWithSha1 1.2.840.10040.4.3
dsaWithSha224   2.16.840.1.101.3.4.3.1
dsaWithSha256   2.16.840.1.101.3.4.3.2
ecdsaWithSha1   1.2.840.10045.4.1
ecdsaWithSha224 1.2.840.10045.4.3.1
ecdsaWithSha256 1.2.840.10045.4.3.2
ecdsaWithSha384 1.2.840.10045.4.3.3
ecdsaWithSha512 1.2.840.10045.4.3.4Password Base Encryption Algorithms:
pbeWithMd2AndDesCbc 1.2.840.113549.1.5.1
pbeWithMd5AndDesCbc 1.2.840.113549.1.5.3
pbeWithSha1AndDesCbc    1.2.840.113549.1.5.10
pbeWithMd2AndRc2Cbc 1.2.840.113549.1.5.4
pbeWithMd5AndRc2Cbc 1.2.840.113549.1.5.6
pbeWithSha1AndRc2Cbc    1.2.840.113549.1.5.11
pbeWithSha1And40BitRc2Cbc   1.2.840.113549.1.12.1.6
pbeWithSha1And128BitRc2Cbc  1.2.840.113549.1.12.1.5
pbeWithSha1And40BitRc4  1.2.840.113549.1.12.1.2
pbeWithSha1And128BitRc4 1.2.840.113549.1.12.1.1
pbeWithSha1And3DesCbc   1.2.840.113549.1.12.1.3Symmetric Encryption Algorithms:
DES CBC 1.3.14.3.2.7
3DES CBC    1.2.840.113549.3.7
RC2 1.2.840.113549.3.2
ArcFour 1.2.840.113549.3.4
AES CBC 128     2.16.840.1.101.3.4.1.2
AES CBC 256 2.16.840.1.101.3.4.1.42x.500 Distinguished Name Attributes:
name    2.5.4.41
surname 2.5.4.4
given name  2.5.4.42
initials    2.5.4.43
generation qualifier    2.5.4.44
common name 2.5.4.3
locality name   2.5.4.7
state or province name  2.5.4.8
organization name   2.5.4.10
organizational unit name    2.5.4.11
title   2.5.4.12
dnQualifier 2.5.4.46
country name    2.5.4.6
email address   1.2.840.113549.1.9.1
domain component    0.9.2342.19200300.100.1.25
street address  2.5.4.9
postal code 2.5.4.17
mail    0.9.2342.19200300.100.1.3
serial number               2.5.4.5ECC names:
secp192r1   1.2.840.10045.3.1.1
secp224r1   1.3.132.0.33
secp256r1   1.2.840.10045.3.1.7
secp384r1   1.3.132.0.34
secp521r1   1.3.132.0.35
brainpoolP160r1 1.3.36.3.3.2.8.1.1.1
brainpoolP192r1 1.3.36.3.3.2.8.1.1.3
brainpoolP224r1 1.3.36.3.3.2.8.1.1.5
brainpoolP256r1 1.3.36.3.3.2.8.1.1.7
brainpoolP320r1 1.3.36.3.3.2.8.1.1.9
brainpoolP384r1 1.3.36.3.3.2.8.1.1.11
brainpoolP512r1 1.3.36.3.3.2.8.1.1.13
  • 原文链接: medium.com/asecuritysite...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
asecuritysite
asecuritysite
江湖只有他的大名,没有他的介绍。