xiangyuecn / RSA-csharp

c# dotnet .NET Framework/Standard/Core RSA Provides: Encrypt,Decrypt,Signature,Verify; RSA key format: PEM (PKCS#1 PKCS#8), XML, Public Private Key, Import Export Convert; Padding support: NoPadding,PKCS1,OAEP,PSS, & MD5,SHA1,SHA256,SHA512,SHA3-256,SHA3-512 etc. Code with zero dependencies. RSA公钥私钥导入导出转换、加密解密、签名验证,多种填充方式支持。
MIT License
231 stars 93 forks source link

C#.net 6.0的警告 #5

Open huster-songtao opened 2 years ago

huster-songtao commented 2 years ago

2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_Modulus”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_Exponent”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_D”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_P”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_Q”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_DP”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_DQ”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(51,11,51,18): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_InverseQ”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(60,18,60,31): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(61,19,61,33): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(64,13,64,20): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(66,13,66,20): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(67,13,67,20): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(68,14,68,22): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(69,14,69,22): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(70,20,70,34): warning CS8601: 可能的 null 引用赋值。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_Modulus”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_Exponent”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_D”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_P”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_Q”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_DP”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_DQ”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(56,10,56,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_InverseQ”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(67,12,67,16): warning CS8603: 可能返回 null 引用。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(69,18,69,22): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(72,12,72,16): warning CS8603: 可能返回 null 引用。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(76,12,76,16): warning CS8603: 可能返回 null 引用。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(97,10,97,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Key_D”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(97,10,97,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_P”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(97,10,97,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_Q”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(97,10,97,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_DP”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(97,10,97,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_DQ”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(97,10,97,17): warning CS8618: 在退出构造函数时,不可为 null 的 字段“Val_InverseQ”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(108,12,108,16): warning CS8603: 可能返回 null 引用。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(127,18,127,22): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(254,18,254,22): warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(189,10,189,49): warning CA1416: 可在所有平台上访问此调用站点。"RSACryptoServiceProvider" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(187,20,187,39): warning CA1416: 可在所有平台上访问此调用站点。"CspParameters" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(188,4,188,19): warning CA1416: 可在所有平台上访问此调用站点。"CspParameters.Flags" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(180,4,180,19): warning CA1416: 可在所有平台上访问此调用站点。"CspParameters.Flags" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(179,20,179,39): warning CA1416: 可在所有平台上访问此调用站点。"CspParameters" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA.cs(181,10,181,58): warning CA1416: 可在所有平台上访问此调用站点。"RSACryptoServiceProvider" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(148,20,148,39): warning CA1416: 可在所有平台上访问此调用站点。"CspParameters" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(149,4,149,19): warning CA1416: 可在所有平台上访问此调用站点。"CspParameters.Flags" 在 'windows' 上受支持。 2>D:\Projects\Trade\Net60\Infrastructure\Cryptography\RSA_PEM.cs(150,14,150,53): warning CA1416: 可在所有平台上访问此调用站点。"RSACryptoServiceProvider" 在 'windows' 上受支持。

RSACryptoServiceProvider应该是最大的问题,.net core上不兼容。

xiangyuecn commented 1 year ago

null的警告可以全部忽略(这些代码要在老旧编译器里面编译),应该有注解可以抑制这个警告。现在源码里面的Test-Build-Run.sh脚本是通过csproj里面配置Nullable=disable 来忽略了这个警告: https://github.com/xiangyuecn/RSA-csharp/blob/1e4ae877ab43c58f0ead8276d46146205432e312/Test-Build-Run.sh#L79


RSACryptoServiceProvider 这些仅在windows上可用的代码,实际工作时也只会在windows上进行调用(.NET Framework),.NET Core上不会调用这些代码;应该也是有注解可以抑制这个警告,但要多写几行条件编译比较麻烦,不然代码在老旧编译器里面编译不了。