-
-
Notifications
You must be signed in to change notification settings - Fork 647
Closed
Labels
Description
I'm using the following code to generate RSA keys:
node@nodejs /u/h/node> cat test/generate-key.js
#!/usr/bin/env node
jsrsasign = require('jsrsasign');
var rsaDespair = jsrsasign.KEYUTIL.generateKeypair('RSA', 2048);
var pem = jsrsasign.KEYUTIL.getPEM(rsaDespair.prvKeyObj, 'PKCS1PRV');
console.log(pem);
Sometimes the generated key has less than 2048 bits:
node@nodejs /u/h/node> while test/generate-key.js | tee broken.key | openssl rsa -noout -text | grep 2048; end; cat broken.key
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQBPQcXBcIl1d6wA273vX7ykpDVCkJZpg2ufjMXSCfltzJgK/orT
dT2TD7fzZDrnC4qRBUna60675Q8LWFFQj7LptML4ycfSLVb37FMHcyawgOrA1WsB
AabbeAtr01dAjvjJ6QFx85FMcgZm01HO79Kk7aDc0+pJuPZ6lWHzGs+6tMVNbVYC
n3wRDZ+zxRGDHk+JlrkPBXjVqCUaz9ERNyp7jnwwVEg3hOUlI6rk508o+cp9oMV2
tJtFxd+65tVWbCiknJ4+6IXE0lJ6XVQr5lcJ7PG7yV24MpIrae6XB4aJgWQ1tYY/
o3J9wrONQb8bGBu/2frhT7JFRhsodoUHNdHtAgMBAAECggEACz6XofQnbGUIIC8M
6XM5vloVvFXrIRkmIcLFJiGII83NHHI0m/+cNssaHAvyV2lJxX1slwSfbQT4d3GW
R8m7ZnDg4I8wLF+GYTJELWBm8s+3fphI0CG93JFRfYDEdkJShcLrE5Gs4Z2jzt7Y
UnWv+vpDwlDGgqMdRRMAjI8XPbPTWu4JqEFlgUW0dj3Y6XxzBUW93GXz+Xo7wgwh
0yI9jbOGrv/pt2WG8p2V7+KWmBLhCjXIfuaJgHCFGaV/aaODW+2gcBMQ9bYcFc4D
SLXSLgecPhFTQmFqwtLJrKZx/9M9TYwJwCFSCxG5GftnFjYKQtHPlOIbXLXB1b0P
TBnDOQKBgQCcPNvaUFR1uV9qjoMf3OH2MEhyRNVgwunlL1bDoWWSxkMVPN6ohas7
S3QhxbwPp997tP2WHA2slv3iLW5UyRlaBWz8N0qecfVX+O8XkpUWRJdf9k6RIXAf
pSprXyrPRPA26FvV/p2dlqwWi3ioSbFtIWW/FpkedqdgS003PMsjVwKBgQCB3V++
Jw7mVLqMs4niB3GxklUu/2LoyZw9fTwLFtS2YZ7CyTUtZcU5gzfOy1g5NWbtrE+h
ipX2CN4xzigFq10hyUi7lqLGpfuZwfb9XRmq1NA/gyM1VPACn92zzTJhTZBR5izw
gsvz8u8STgmYunZ5Ek9iNWJD4mmvz0KbBAqOWwKBgQCP5zIsi66vW9U5pRe7Ikxx
4BjqPuI2JHEgahDFUYPnw3sINa9zkuKbU60cai8EUH/0RkkHmMEzhUNErsmfiDY0
hyjRye+NrrLmm19E2/s7rmOqvIey/xRx4UQH73jTvdBvEmd72++6tYu9nCq+/llQ
heFcNulDeNBDTjhJt1H3MwKBgDLOD1HN5/dWOHEpIA0sSl9k1yx+vwxBK32my+Gu
ueLsB/c+Ti6HfQQGAMRHKymeabkbyz9wf0B0sbCcbW3iX5oDLBAvW1kJwIejqWPv
k0YQ4bOnMxP/ObJdJpfb9BS7CnXv7a7eDLpQVRU9MGXutMCi2CmcpufV4PDlzbHl
f9e3AoGBAIQIiPD07YKNtvqV4vOSlOZCvquVm3u2vegE1pW4j1IHYVuhHg5DP1gb
YdL7kP+EmcmzEToh54Kd6sHmzTtf44GdHgucpsdrygpMDXyxd2E2WnnnFUZ7WkPE
oHAX8BhpxUjBakXBwQHJ+prAohNJx7ddtpXG/sNhOubGDp+EPcjC
-----END RSA PRIVATE KEY-----
node@nodejs /u/h/node> openssl rsa -in broken.key -noout -text
RSA Private-Key: (2047 bit, 2 primes)
modulus:
4f:41:c5:c1:70:89:75:77:ac:00:db:bd:ef:5f:bc:
a4:a4:35:42:90:96:69:83:6b:9f:8c:c5:d2:09:f9:
6d:cc:98:0a:fe:8a:d3:75:3d:93:0f:b7:f3:64:3a:
e7:0b:8a:91:05:49:da:eb:4e:bb:e5:0f:0b:58:51:
50:8f:b2:e9:b4:c2:f8:c9:c7:d2:2d:56:f7:ec:53:
07:73:26:b0:80:ea:c0:d5:6b:01:01:a6:db:78:0b:
6b:d3:57:40:8e:f8:c9:e9:01:71:f3:91:4c:72:06:
66:d3:51:ce:ef:d2:a4:ed:a0:dc:d3:ea:49:b8:f6:
7a:95:61:f3:1a:cf:ba:b4:c5:4d:6d:56:02:9f:7c:
11:0d:9f:b3:c5:11:83:1e:4f:89:96:b9:0f:05:78:
d5:a8:25:1a:cf:d1:11:37:2a:7b:8e:7c:30:54:48:
37:84:e5:25:23:aa:e4:e7:4f:28:f9:ca:7d:a0:c5:
76:b4:9b:45:c5:df:ba:e6:d5:56:6c:28:a4:9c:9e:
3e:e8:85:c4:d2:52:7a:5d:54:2b:e6:57:09:ec:f1:
bb:c9:5d:b8:32:92:2b:69:ee:97:07:86:89:81:64:
35:b5:86:3f:a3:72:7d:c2:b3:8d:41:bf:1b:18:1b:
bf:d9:fa:e1:4f:b2:45:46:1b:28:76:85:07:35:d1:
ed
publicExponent: 65537 (0x10001)
privateExponent:
0b:3e:97:a1:f4:27:6c:65:08:20:2f:0c:e9:73:39:
be:5a:15:bc:55:eb:21:19:26:21:c2:c5:26:21:88:
23:cd:cd:1c:72:34:9b:ff:9c:36:cb:1a:1c:0b:f2:
57:69:49:c5:7d:6c:97:04:9f:6d:04:f8:77:71:96:
47:c9:bb:66:70:e0:e0:8f:30:2c:5f:86:61:32:44:
2d:60:66:f2:cf:b7:7e:98:48:d0:21:bd:dc:91:51:
7d:80:c4:76:42:52:85:c2:eb:13:91:ac:e1:9d:a3:
ce:de:d8:52:75:af:fa:fa:43:c2:50:c6:82:a3:1d:
45:13:00:8c:8f:17:3d:b3:d3:5a:ee:09:a8:41:65:
81:45:b4:76:3d:d8:e9:7c:73:05:45:bd:dc:65:f3:
f9:7a:3b:c2:0c:21:d3:22:3d:8d:b3:86:ae:ff:e9:
b7:65:86:f2:9d:95:ef:e2:96:98:12:e1:0a:35:c8:
7e:e6:89:80:70:85:19:a5:7f:69:a3:83:5b:ed:a0:
70:13:10:f5:b6:1c:15:ce:03:48:b5:d2:2e:07:9c:
3e:11:53:42:61:6a:c2:d2:c9:ac:a6:71:ff:d3:3d:
4d:8c:09:c0:21:52:0b:11:b9:19:fb:67:16:36:0a:
42:d1:cf:94:e2:1b:5c:b5:c1:d5:bd:0f:4c:19:c3:
39
prime1:
00:9c:3c:db:da:50:54:75:b9:5f:6a:8e:83:1f:dc:
e1:f6:30:48:72:44:d5:60:c2:e9:e5:2f:56:c3:a1:
65:92:c6:43:15:3c:de:a8:85:ab:3b:4b:74:21:c5:
bc:0f:a7:df:7b:b4:fd:96:1c:0d:ac:96:fd:e2:2d:
6e:54:c9:19:5a:05:6c:fc:37:4a:9e:71:f5:57:f8:
ef:17:92:95:16:44:97:5f:f6:4e:91:21:70:1f:a5:
2a:6b:5f:2a:cf:44:f0:36:e8:5b:d5:fe:9d:9d:96:
ac:16:8b:78:a8:49:b1:6d:21:65:bf:16:99:1e:76:
a7:60:4b:4d:37:3c:cb:23:57
prime2:
00:81:dd:5f:be:27:0e:e6:54:ba:8c:b3:89:e2:07:
71:b1:92:55:2e:ff:62:e8:c9:9c:3d:7d:3c:0b:16:
d4:b6:61:9e:c2:c9:35:2d:65:c5:39:83:37:ce:cb:
58:39:35:66:ed:ac:4f:a1:8a:95:f6:08:de:31:ce:
28:05:ab:5d:21:c9:48:bb:96:a2:c6:a5:fb:99:c1:
f6:fd:5d:19:aa:d4:d0:3f:83:23:35:54:f0:02:9f:
dd:b3:cd:32:61:4d:90:51:e6:2c:f0:82:cb:f3:f2:
ef:12:4e:09:98:ba:76:79:12:4f:62:35:62:43:e2:
69:af:cf:42:9b:04:0a:8e:5b
exponent1:
00:8f:e7:32:2c:8b:ae:af:5b:d5:39:a5:17:bb:22:
4c:71:e0:18:ea:3e:e2:36:24:71:20:6a:10:c5:51:
83:e7:c3:7b:08:35:af:73:92:e2:9b:53:ad:1c:6a:
2f:04:50:7f:f4:46:49:07:98:c1:33:85:43:44:ae:
c9:9f:88:36:34:87:28:d1:c9:ef:8d:ae:b2:e6:9b:
5f:44:db:fb:3b:ae:63:aa:bc:87:b2:ff:14:71:e1:
44:07:ef:78:d3:bd:d0:6f:12:67:7b:db:ef:ba:b5:
8b:bd:9c:2a:be:fe:59:50:85:e1:5c:36:e9:43:78:
d0:43:4e:38:49:b7:51:f7:33
exponent2:
32:ce:0f:51:cd:e7:f7:56:38:71:29:20:0d:2c:4a:
5f:64:d7:2c:7e:bf:0c:41:2b:7d:a6:cb:e1:ae:b9:
e2:ec:07:f7:3e:4e:2e:87:7d:04:06:00:c4:47:2b:
29:9e:69:b9:1b:cb:3f:70:7f:40:74:b1:b0:9c:6d:
6d:e2:5f:9a:03:2c:10:2f:5b:59:09:c0:87:a3:a9:
63:ef:93:46:10:e1:b3:a7:33:13:ff:39:b2:5d:26:
97:db:f4:14:bb:0a:75:ef:ed:ae:de:0c:ba:50:55:
15:3d:30:65:ee:b4:c0:a2:d8:29:9c:a6:e7:d5:e0:
f0:e5:cd:b1:e5:7f:d7:b7
coefficient:
00:84:08:88:f0:f4:ed:82:8d:b6:fa:95:e2:f3:92:
94:e6:42:be:ab:95:9b:7b:b6:bd:e8:04:d6:95:b8:
8f:52:07:61:5b:a1:1e:0e:43:3f:58:1b:61:d2:fb:
90:ff:84:99:c9:b3:11:3a:21:e7:82:9d:ea:c1:e6:
cd:3b:5f:e3:81:9d:1e:0b:9c:a6:c7:6b:ca:0a:4c:
0d:7c:b1:77:61:36:5a:79:e7:15:46:7b:5a:43:c4:
a0:70:17:f0:18:69:c5:48:c1:6a:45:c1:c1:01:c9:
fa:9a:c0:a2:13:49:c7:b7:5d:b6:95:c6:fe:c3:61:
3a:e6:c6:0e:9f:84:3d:c8:c2
I'm using jsrsasign 8.0.15 and node v13.10.1:
node@nodejs /u/h/node> node --version
v13.10.1
nickrobillard