我正在使用JSON在我的应用程序中存储某些设置。其中一些设置包含敏感信息(例如密码),而其他设置则不敏感。理想情况下,我希望能够序列化敏感属性被自动加密的对象,同时保持非敏感设置的可读性。有没有办法使用Json.Net做到这一点?我没有看到任何与加密有关的设置。
我的解决方案:
public string PasswordEncrypted { get; set; } [JsonIgnore] public string Password { get { var encrypted = Convert.FromBase64String(PasswordEncrypted); var data = ProtectedData.Unprotect(encrypted, AdditionalEntropy, DataProtectionScope.LocalMachine); var res = Encoding.UTF8.GetString(data); return res; } set { var data = Encoding.UTF8.GetBytes(value); var encrypted = ProtectedData.Protect(data, AdditionalEntropy, DataProtectionScope.LocalMachine); PasswordEncrypted = Convert.ToBase64String(encrypted); }
(可以减少冗长)