加密和解密多个设备上的ConnectionString

时间:2019-04-25 15:09:22

标签: c# uwp

问题

我正在UWP上开发一个应用程序,在这里我使用Azure目录表存储(因此我必须加密连接字符串)。

必须加密一次,但必须在其他设备上解密。

如何在哪里存储加密密钥?

我应该使用哪种算法?

尝试

我尝试了在这里找到的RSA算法:http://www.japf.fr/2013/05/rsa-cryptography-between-a-winrt-and-a-dotnet-app/

但是我不能将密钥存储在JSON文件中...我不明白为什么

预期

我想在将要在其他设备上共享的配置文件中加密连接字符串,并在它们上也对其解密。

1 个答案:

答案 0 :(得分:0)

关于RSA密钥: 最后,我使用RSA算法对其进行加密,公钥将存储在配置文件中,而私钥将存储在应用程序的本地KeyVault中。

我只是将字节数组转换为十六进制字符串,以将其像字符串一样存储在JSON文件中。

using System.Linq;

public static byte[] HexToByteArray(string s)
        {
            return Enumerable.Range(0, s.Length)
                     .Where(x => x % 2 == 0)
                     .Select(x => Convert.ToByte(s.Substring(x, 2), 16))
                     .ToArray();
        }

        public static string ByteArrayToHex(byte[] b)
        {
            return BitConverter.ToString(b).Replace("-", "");
        }