Безопасное шифрование данных - PullRequest
0 голосов
/ 07 ноября 2019

Мне нужно было безопасно зашифровать некоторые данные, и я нашел этот фрагмент кода для использования. Я проверил его, и он кажется мне нечитаемым, но Как мне сохранить мой ключ шифрования, чтобы большинство людей не смогли получить к нему доступ?

public static string Encrypt(string clearText)
{
    string EncryptionKey = "encryptionKey";
    byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
    using (Aes encryptor = Aes.Create())
    {
        Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
        encryptor.Key = pdb.GetBytes(32);
        encryptor.IV = pdb.GetBytes(16);
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cs.Write(clearBytes, 0, clearBytes.Length);
                cs.Close();
            }
            clearText = Convert.ToBase64String(ms.ToArray());
        }
    }
    return clearText;
}
public static string Decrypt(string cipherText)
{
    string EncryptionKey = "encryptionKey";
    cipherText = cipherText.Replace(" ", "+");
    byte[] cipherBytes = Convert.FromBase64String(cipherText);
    using (Aes encryptor = Aes.Create())
    {
        Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
        encryptor.Key = pdb.GetBytes(32);
        encryptor.IV = pdb.GetBytes(16);
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cs.Write(cipherBytes, 0, cipherBytes.Length);
                cs.Close();
            }
            cipherText = Encoding.Unicode.GetString(ms.ToArray());
        }
    }
    return cipherText;
}

1 Ответ

0 голосов
/ 08 ноября 2019

После долгих исследований и некоторых доработок кода я наконец-то нашел безопасный метод шифрования. Я сгенерировал некоторые безопасные случайные числа из хранилища ключей Android, дополнительную информацию здесь: https://medium.com/@josiassena/using-the-android-keystore-system-to-store-sensitive-information-3a56175a454b, и я скомбинировал числа с идентификатором устройства, который уникален для каждого устройства и всегда одинаков. Все три из них дают мне ключ шифрования, который должен быть защищен от большинства хакеров / программ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...