抛出异常:'System.PlatformNotSupportedException'。如何在 dotnet core 3.1 中加密和解密安全字符串?

Posted

技术标签:

【中文标题】抛出异常:\'System.PlatformNotSupportedException\'。如何在 dotnet core 3.1 中加密和解密安全字符串?【英文标题】:Exception thrown: 'System.PlatformNotSupportedException' . How to encrypt and decrypt securestring in dotnet core 3.1?抛出异常:'System.PlatformNotSupportedException'。如何在 dotnet core 3.1 中加密和解密安全字符串? 【发布时间】:2021-12-31 18:56:12 【问题描述】:

操作系统: Ubuntu

平台: dotnet core 3.1

我试图使用以下方法对安全字符串进行加密和解密,但出现以下异常。

Exception thrown: 'System.PlatformNotSupportedException' in System.Security.Cryptography.ProtectedData.dll: 'Windows Data Protection API (DPAPI) is not supported on this platform.'

加密方法

        public static string EncryptString(System.Security.SecureString input)
        
            byte[] encryptedData = System.Security.Cryptography.ProtectedData.Protect(
                System.Text.Encoding.Unicode.GetBytes(ToInsecureString(input)),
                entropy,
                System.Security.Cryptography.DataProtectionScope.CurrentUser);
            return Convert.ToBase64String(encryptedData);
        

解密方法

        public static SecureString DecryptString(string encryptedData)
        
            try
            
                byte[] decryptedData = System.Security.Cryptography.ProtectedData.Unprotect(
                    Convert.FromBase64String(encryptedData),
                    entropy,
                    System.Security.Cryptography.DataProtectionScope.CurrentUser);
                return ToSecureString(System.Text.Encoding.Unicode.GetString(decryptedData));
            
            catch
            
                return new SecureString();
            
        

如何在dotnet core 3.1中加密和解密securestring

【问题讨论】:

【参考方案1】:

非常抱歉,此 API 仅在 Windows 上受支持。见:https://docs.microsoft.com/en-us/dotnet/core/compatibility/unsupported-apis

【讨论】:

以上是关于抛出异常:'System.PlatformNotSupportedException'。如何在 dotnet core 3.1 中加密和解密安全字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Java:抛出异常后如何终止执行后面的代码?

JAVA如何抛出异常

java中异常抛出后代码还会继续执行吗

finally中流关闭失败需要抛出异常吗

java 中提示抛出异常

从Java向MySQL添加数据抛出异常