在.NET中,你需要私鑰的全套CRT參數,所以如果你有D,你還需要P,Q,DP,DQ和InverseQ。
RSAParameters rsaParams = new RSAParameters();
rsaParams.Modulus = ParseHex(modulus);
rsaParams.Exponent = ParseHex(exponent);
rsaParams.D = ParseHex(d, rsaParams.Modulus.Length);
rsaParams.P = ParseHex(p, (rsaParams.Modulus.Length + 1)/2);
rsaParams.Q = ParseHex(q, rsaParams.P.Length);
rsaParams.DP = ParseHex(dp, rsaParams.P.Length);
rsaParams.DQ = ParseHex(dq, rsaParams.P.Length);
rsaParams.InverseQ = ParseHex(inverseQ, rsaParams.P.Length);
RSA rsa = RSA.Create();
rsa.ImportParameters(rsaParams);
凡ParseHex(string str, int len=-1)
是解析十六進制字符串爲固定長度陣列的例行程序(如果該十六進制字符串短,在陣列應留有填充用0字節值)。