我想编写一个将同时生成SSH 2 RSA公钥和私钥的应用程序。
我想以PuTTY密钥生成器可以生成的格式获取密钥。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS80R3doZC5wbmcifQ==” alt =“在此处输入图像描述”>
在ChilKat的帮助下,我还可以生成公共和私有密钥,但是我不知道如何获得这种格式。
是否有任何样本可以获取这种格式的密钥,或者我错过了什么?
非常感谢!
我找到了解决方案:从Nuget Gallery下载Chilkat.NET Nuget。借助此库,您可以通过以下方式生成RSA密钥对:
public ISshKeyPair RsaKeyPair()
{
Chilkat.SshKey key = new Chilkat.SshKey();
bool success;
int numBits;
int exponent;
numBits = 2048;
exponent = 65537;
success = key.GenerateRsaKey(numBits, exponent);
var sshKeyPair = new SshKeyPair();
sshKeyPair.PublicKey = key.ToOpenSshPublicKey();
sshKeyPair.PrivateKey = key.ToPuttyPrivateKey(false);
if (!success) RsaKeyPair();
return sshKeyPair;
}
干杯!
SSH密钥格式相当复杂;如果您想自己实现,则this,this和this答案可能是一个不错的开始。
但是,实际上实际上已经有人完成了该工作,并创建了一个用于生成SSH密钥的NuGet包:SshKeyGenerator。现在,该软件包同时适用于.NET Framework和.NET Standard。源代码可在GitHub上找到。
示例代码:
static void Main(string[] args)
{
int keyBits = 2048;
string keyComment = "mykey";
var keygen = new SshKeyGenerator.SshKeyGenerator(keyBits);
Console.WriteLine(keygen.ToPrivateKey());
Console.WriteLine(keygen.ToRfcPublicKey(keyComment));
}
生成(为便于阅读而缩短)
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA7ejxsqTKLMLht6HVC57l59mMzQNIVdeMaPzxM14VYjkyU1rg
...
L4NAI1BCgGpSC+iY3QuVwK8GVphVSzNrOQj97Uuhx0WYsEdPzJvjQw==
-----END RSA PRIVATE KEY-----
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD...nFX7Rhou4OdkDGA1 mykey
请注意,该软件包当前不支持[[not设置私钥密码短语。