1 - 请使用> = 2048位,在你的钥匙被直到年〜2025年的保护。
以上是来自2012年,但我试图为Putty/Linux服务器连接创建ssh-rsa密钥时遇到了它。
我刚刚解决了以适当格式创建公共ssh-rsa键的类似问题,以匹配PuttyGen。
对于Microsoft .NET 的RSACryptoServiceProvider它看起来像这样
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(3072);
byte[] sshrsa_bytes = Encoding.Default.GetBytes("ssh-rsa");
byte[] n = RSA.ExportParameters(false).Modulus;
byte[] e = RSA.ExportParameters(false).Exponent;
string buffer64;
using (MemoryStream ms = new MemoryStream())
{
ms.Write(ToBytes(sshrsa_bytes.Length), 0, 4);
ms.Write(sshrsa_bytes, 0, sshrsa_bytes.Length);
ms.Write(ToBytes(e.Length), 0, 4);
ms.Write(e, 0, e.Length);
ms.Write(ToBytes(n.Length+1), 0, 4); //Remove the +1 if not Emulating Putty Gen
ms.Write(new byte[] { 0 }, 0, 1); //Add a 0 to Emulate PuttyGen (remove it not emulating)
ms.Write(n, 0, n.Length);
ms.Flush();
buffer64 = Convert.ToBase64String(ms.ToArray());
}
string pubssh = string.Format("ssh-rsa {0} generated-key", buffer64);
你可以看到我的我用于测试&腻子创源代码的链接私钥https://www.cameronmoten.com/2017/12/21/rsacryptoserviceprovider-create-a-ssh-rsa-public-key/
我在微软工作,但这不是微软的个人答案。
原贴的BouncyCastle的(Link)
你不必提你在哪里工作,因为它没有任何关系的问题。除非另有说明,否则任何答案都是私人的。 – Hexfire