抛出异常:'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 中加密和解密安全字符串?的主要内容,如果未能解决你的问题,请参考以下文章