利用UWP数据保护功能加密字符串

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);
        }

留言

有想法?请给我们留言!您的留言不会直接显示在网站内。