UWP平台支持使用Windows系统自带的Data Protection功能进行数据加密,密钥由操作系统进行管理,开发者无需考虑密钥的生成和分发问题。该功能可以将数据加密为只有特定用户才能解密的密文。
要使用Data Protection进行数据加密,需要用到UWP平台的DataProtectionProvider类。该类使用一个称为protectionDescriptor(保护说明符)的字符串来管理数据的权限,“LOCAL=user”这个protectionDescriptor表示只有当前用户能够解密加密后的密文,而“LOCAL=machine”这个protectionDescriptor表示当前计算机上的所有用户都能解密这个密文。
下列代码展示了如何使用Data Protection功能加密并解密一段字符串。加密后的字符串只有当前登录的用户才能解密。
async Task<byte[]> Encrypt(string plainText)
{
DataProtectionProvider provider = new DataProtectionProvider("LOCAL=user");
var plainBuffer = CryptographicBuffer.ConvertStringToBinary(plainText, BinaryStringEncoding.Utf8);
var protectedBuffer = await provider.ProtectAsync(plainBuffer);
CryptographicBuffer.CopyToByteArray(protectedBuffer, out byte[] protectedBytes);
return protectedBytes;
}
async Task<string> Decrypt(byte[] protectedBytes)
{
DataProtectionProvider provider = new DataProtectionProvider("LOCAL=user");
var protectedBuffer = CryptographicBuffer.CreateFromByteArray(protectedBytes);
var plainBuffer = await provider.UnprotectAsync(protectedBuffer);
return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, plainBuffer);
}
留言
有想法?请给我们留言!您的留言不会直接显示在网站内。