@
a33291 #28 可以的,你用 xshell 试一下,加上密码后,私钥会多两行
```
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F93AC78849AF6892
```
Proc-Type: 4,ENCRYPTED 是固定的,表示私钥已经加密,DEK-Info 的值的逗号前的 DES-EDE3-CBC 是加密算法,逗号后的 F93AC78849AF6892 是 IV ,也拿来做 salt
公钥保持不变
代码可参考 python 的 Cryptodome 包,在 Cryptodome/IO/
PEM.py ,这个文件不到两百行
```python
if lines[1].startswith('Proc-Type:4,ENCRYPTED'):
DEK = lines[2].split(':')
algo, salt = DEK[1].split(',')
if algo == "DES-EDE3-CBC":
key = _EVP_BytesToKey(passphrase, salt, 24)
objdec = DES3.new(key, DES3.MODE_CBC, salt)
def _EVP_BytesToKey(data, salt, key_len):
d = [ b'' ]
m = (key_len + 15 ) // 16
for _ in range(m):
nd = MD5.new(d[-1] + data + salt).digest()
d.append(nd)
return b"".join(d)[:key_len]
```