.net core RSA兼容linux和windows

    技术2022-07-10  145

    .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);

    运行后正常!

     

    Processed: 0.014, SQL: 10