opensl로 키 생성 후 파싱
핵심은 개인키였음
개인키를 만들고 공개키 생성
공개키, 개인키는 n, d, e가 나열돼서 담기는 게 아니라 특정 포맷으로 담김
DER (Distinguished Encoding Rules) 포맷의 ASN.1 (Abstract Syntax Notation One) 데이터를 base64로 인코딩
Private-Key: (2048 bit, 2 primes)
modulus:
00:ce:c7:d3:0d:ef:a2:3a:27:f0:e7:31:06:fe:b9:
18:90:22:bd:65:96:32:8f:b1:53:dd:32:8c:5e:02:
21:2b:f5:e7:d8:b4:7e:7b:47:4e:03:df:13:86:0f:
92:50:83:c2:83:34:b1:fa:97:6d:a9:90:19:41:e5:
93:5a:ee:d7:51:75:c3:f8:91:20:7e:62:07:67:b4:
64:0c:ba:d4:fe:37:2d:5d:08:58:bf:9c:80:7f:72:
cc:d4:20:f9:60:3c:20:3a:7c:82:bf:66:85:f9:09:
cb:72:3f:61:40:26:4c:06:8d:34:c0:b7:29:27:4c:
69:e9:4c:13:71:32:e1:3e:34:bd:4c:e9:13:e1:c8:
3a:35:82:f4:8e:30:9b:5d:10:0d:33:52:95:7f:7b:
7a:74:16:81:5f:97:9e:ed:43:90:da:e7:fa:bf:94:
ae:36:b7:3c:19:aa:c9:75:21:0b:31:a9:9e:e7:4f:
f1:c0:98:3b:38:c2:4b:fa:73:a9:17:dd:9f:7d:e9:
c0:32:78:5b:67:8e:0e:52:21:c0:d7:29:0b:bf:28:
86:c1:14:ab:2b:f4:85:b4:dc:ab:08:58:94:de:fd:
c1:b3:49:ef:51:ef:f5:16:8d:90:5b:c4:54:c7:8f:
e6:64:55:0f:c3:40:bc:8b:af:63:45:92:33:88:a5:
44:bb
publicExponent: 65537 (0x10001)
privateExponent:
35:1e:71:11:c5:ea:eb:3c:a2:6e:89:92:2d:f2:57:
a4:83:40:1b:2e:1b:db:fc:e6:39:cf:07:ef:08:66:
04:18:7e:10:15:c1:de:22:61:a0:ad:f8:22:7a:b2:
8f:fb:61:06:fa:8c:f3:fe:5d:7d:ef:16:05:ef:17:
4d:07:49:09:d4:92:5c:b2:cf:61:98:06:25:f6:59:
b3:49:75:78:be:ac:e9:16:c1:51:ab:be:f8:be:81:
6e:c6:ef:b8:f0:89:28:ed:1e:5b:53:d7:7b:b3:af:
ef:2f:e7:e8:26:4e:66:6a:74:d0:42:dd:10:0a:d9:
b4:44:46:44:50:99:3b:34:b3:9f:f3:da:ee:bf:89:
3e:10:48:21:ed:f8:1c:22:06:d6:a2:3a:99:bb:57:
38:4f:43:25:63:21:26:c7:2f:4e:8e:08:44:10:fa:
e4:48:10:42:bd:4c:29:10:46:b4:c5:01:0d:3d:4c:
5f:7b:e7:90:51:0a:af:93:7e:a3:82:c0:2d:d8:ab:
f7:e8:7b:56:f8:cb:34:07:d9:f1:cf:9d:6e:2b:7e:
3a:32:80:e8:84:b0:fd:2a:80:1d:52:71:d6:9c:78:
ea:b5:ee:13:a6:ba:0b:37:71:23:b4:54:3c:4e:ba:
9b:15:c9:7f:c0:1a:31:57:97:9b:25:0e:28:d9:93:
89
prime1:
00:f7:13:7c:ba:fe:77:b8:c7:82:cd:d5:74:19:eb:
7a:9e:d1:ac:80:06:7a:40:8c:b5:1f:e5:80:0f:5c:
87:d7:42:d0:9a:af:00:9d:c1:fe:c9:2b:f2:66:ee:
e5:a4:9a:80:7b:1f:15:7d:64:ae:2d:7c:1e:0e:ef:
43:5b:87:49:09:35:de:c3:c3:ac:65:f1:82:e9:c6:
3b:6e:17:fb:60:5d:d5:72:ad:d2:16:d2:7b:3d:f3:
bb:95:c7:16:ce:02:d2:0c:dc:bf:7f:f7:fa:ca:e1:
d9:51:c5:4d:f4:6d:53:3c:81:c4:3a:a4:2b:f9:8a:
de:56:11:08:75:c5:e7:1e:d3
prime2:
00:d6:3f:c1:be:e3:52:92:e0:84:2e:80:fd:5f:a9:
7e:74:95:41:bc:75:22:c1:8d:cf:57:e7:09:df:f5:
f0:67:9d:78:14:8e:dc:33:b6:ef:80:61:9a:a0:d9:
1c:f4:4d:3f:b9:2d:51:e2:9c:f9:f3:65:94:05:70:
f9:83:3b:f0:27:8a:e2:0b:fc:be:c1:9c:06:a7:82:
b1:10:91:66:62:4f:a9:f9:76:3f:54:d7:6a:66:b1:
6f:d4:98:20:b1:9b:de:1a:32:be:94:56:b2:f0:9f:
2b:39:c9:bc:c5:f6:d9:f0:b1:c5:7d:4e:70:43:b5:
12:45:4f:c6:ee:da:c7:a1:79
exponent1:
2a:3e:3d:b4:26:ef:c7:3a:ed:45:4d:fa:74:b8:0b:
15:fe:59:54:e6:46:9e:a4:b0:0f:0d:09:11:17:4b:
ee:64:f1:0f:91:5e:34:9a:c7:7a:13:b6:75:1c:e1:
4c:7c:51:fd:3a:fa:4c:9f:1b:1c:91:bc:fd:e6:b0:
88:84:9f:db:20:47:bf:06:c4:82:05:81:d1:80:60:
06:d9:b8:d3:e8:17:27:6d:4a:9f:36:4b:75:f3:27:
1e:5b:94:ad:92:53:e1:79:18:90:c3:90:30:81:de:
cb:19:45:d3:c5:a1:56:96:05:3b:d5:77:e3:49:77:
ec:15:2b:72:1f:6c:fd:9b
exponent2:
00:a2:2b:24:35:9e:cf:73:c9:69:83:e1:b2:e7:63:
de:09:d4:a8:2b:43:e6:88:e7:14:18:8f:12:94:69:
0e:0c:ff:ce:52:91:47:f0:04:fa:08:0c:d9:04:03:
12:bd:80:73:49:71:1a:58:13:45:c6:8c:0e:9c:87:
c4:f5:26:bb:42:d3:07:02:d7:ce:73:b1:eb:ff:83:
17:0f:59:5f:4b:ee:cc:d3:bc:43:77:ae:8e:25:29:
0d:62:b7:bb:97:74:49:8b:3e:f9:ae:42:69:b3:64:
67:4d:98:7b:c0:c4:76:76:8f:b8:d2:7e:3a:cf:a5:
11:2d:51:93:5c:5c:51:5a:d1
coefficient:
30:0b:a3:e9:a4:12:db:a9:57:73:c2:1a:68:0e:86:
0a:fc:87:57:eb:72:56:71:3d:b9:69:cf:9d:bd:1b:
84:fa:e4:e8:5f:5c:0b:f2:8a:b0:da:4c:86:68:61:
d5:e5:1a:9a:eb:c1:a7:f0:e4:bd:3a:36:f8:c1:7e:
d6:bc:81:bd:44:e9:39:b4:c8:4e:ca:30:b3:ca:e0:
d0:ac:9e:18:27:84:89:ae:03:bc:f8:6d:0e:09:c6:
eb:7f:5a:bc:27:fb:de:17:79:b5:c6:a3:4a:1c:4f:
08:05:ff:fd:bb:dd:32:45:52:38:7a:ff:57:81:f3:
54:ca:92:3c:0d:80:0b:bb

모듈러스 (n): 이것은 RSA 암호에서 사용되는 두 소수의 곱입니다. 이 값은 암호화 및 복호화 과정에서 모듈로 연산의 기준이 되며, 일반적으로 매우 큰 16진수 숫자로 표현됩니다.
공개 지수 (publicExponent): 이는 일반적으로 매우 작은 수인데, RSA에서 가장 흔히 사용되는 값은 65537입니다. 이 지수는 공개키의 일부로 사용되며, 암호화 과정에 필요합니다.
개인 지수 (privateExponent): 이 값은 공개 지수와 함께 모듈러스 ϕ(n)를 사용하여 계산됩니다. 개인키의 핵심 부분으로, 복호화 과정에서 사용됩니다.
소수1 (prime1) 및 소수2 (prime2): 이 두 값은 모듈러스 n을 생성하기 위해 곱해진 두 소수입니다. 이 소수들은 개인키 정보의 중요한 부분이며, 보안을 위해 비밀로 유지되어야 합니다.
지수1 (exponent1) 및 지수2 (exponent2): 이들은 각각 소수1과 소수2에 대한 개인 지수 d의 모듈로 계산 값입니다. 이 값들은 효율적인 복호화를 위해 사용됩니다.
계수 (coefficient): 이는 두 소수간의 관계에 대한 정보를 담고 있으며, 특히 복호화 과정에서 중요한 역할을 합니다.
지수1, 지수2, 계수는 중국인의 나머지 정리를 통해 복호화를 효율적으로 함.
n으로 계산하는 게 아니라 더 작은 P, q로 계산하므로 효과적
특히 n이 길 떄 효과적이다.
Public-Key: (2048 bit)
Modulus:
00:ce:c7:d3:0d:ef:a2:3a:27:f0:e7:31:06:fe:b9:
18:90:22:bd:65:96:32:8f:b1:53:dd:32:8c:5e:02:
21:2b:f5:e7:d8:b4:7e:7b:47:4e:03:df:13:86:0f:
92:50:83:c2:83:34:b1:fa:97:6d:a9:90:19:41:e5:
93:5a:ee:d7:51:75:c3:f8:91:20:7e:62:07:67:b4:
64:0c:ba:d4:fe:37:2d:5d:08:58:bf:9c:80:7f:72:
cc:d4:20:f9:60:3c:20:3a:7c:82:bf:66:85:f9:09:
cb:72:3f:61:40:26:4c:06:8d:34:c0:b7:29:27:4c:
69:e9:4c:13:71:32:e1:3e:34:bd:4c:e9:13:e1:c8:
3a:35:82:f4:8e:30:9b:5d:10:0d:33:52:95:7f:7b:
7a:74:16:81:5f:97:9e:ed:43:90:da:e7:fa:bf:94:
ae:36:b7:3c:19:aa:c9:75:21:0b:31:a9:9e:e7:4f:
f1:c0:98:3b:38:c2:4b:fa:73:a9:17:dd:9f:7d:e9:
c0:32:78:5b:67:8e:0e:52:21:c0:d7:29:0b:bf:28:
86:c1:14:ab:2b:f4:85:b4:dc:ab:08:58:94:de:fd:
c1:b3:49:ef:51:ef:f5:16:8d:90:5b:c4:54:c7:8f:
e6:64:55:0f:c3:40:bc:8b:af:63:45:92:33:88:a5:
44:bb
Exponent: 65537 (0x10001)
.key와 .pem은 주로 암호화 관련 파일 형식을 나타냅니다.
.key 파일: 이 파일은 주로 개인 키를 저장하는 데 사용됩니다. 개인 키는 대칭 및 비대칭 암호화에서 사용되며, 주로 OpenSSL 및 다른 암호화 도구에서 생성된 개인 키를 포함합니다. .key 파일은 일반적으로 텍스트 기반 형식이 아니라 이진 형식으로 저장될 수 있습니다.
.pem 파일: 이 파일은 주로 개인 키, 공개 키, 인증서 등을 포함하는 범용적인 포맷입니다. PEM (Privacy-Enhanced Mail) 형식은 Base64로 인코딩된 ASCII 텍스트 파일입니다. .pem 파일은 다양한 유형의 데이터를 포함할 수 있으며, 인증서, 개인 키, 중간 인증서, 루트 인증서 등 다양한 암호화 관련 정보를 저장할 수 있습니다.
따라서, .key 파일은 주로 개인 키를 저장하기 위한 이진 형식의 파일이며, .pem 파일은 Base64로 인코딩된 ASCII 텍스트 형식으로 다양한 암호화 관련 데이터를 저장하는 범용적인 형식입니다.
HS256은 HMAC-SHA256 알고리즘을 사용하여 메시지나 데이터의 무결성을 검증하는 데 적
RS256은 RSA-SHA256알고리즘을 사용하여 메시지나 데이터의 디지털 서명을 생성하는 데 적용