.netFramework 下的写法。这是在windows上运行没有问题。
// ------- create RSACryptoServiceProvider instance and initialize with public key ----- CspParameters CspParameters = new CspParameters(); CspParameters.Flags = CspProviderFlags.UseMachineKeyStore;
int bitLen = 1024; if ("RSA2".Equals(signType)) { bitLen = 2048; }
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(bitLen, CspParameters); RSAParameters RSAparams = new RSAParameters(); RSAparams.Modulus = MODULUS; RSAparams.Exponent = E; RSAparams.D = D; RSAparams.P = P; RSAparams.Q = Q; RSAparams.DP = DP; RSAparams.DQ = DQ; RSAparams.InverseQ = IQ; RSA.ImportParameters(RSAparams);
发布到linux centos,运行后直接报错
'CspParameters' requires Windows Cryptographic API (CAPI), which is not available on this platform
这时候将写法改为:
var rsa = RSA.Create(); rsa.KeySize = bitLen; var rsAparams = new RSAParameters(); rsAparams.Modulus = MODULUS; rsAparams.Exponent = E; rsAparams.D = D; rsAparams.P = P; rsAparams.Q = Q; rsAparams.DP = DP; rsAparams.DQ = DQ; rsAparams.InverseQ = IQ; rsa.ImportParameters(rsAparams);
运行后正常!