База данных с проблемой AES Encrypt Performance - PullRequest
0 голосов
/ 27 марта 2019

Мой клиент хочет зашифровать все с помощью AES для защиты информации о клиенте / счете! Я сделал приложение .net с базой данных Mysql (хост на Hostgator). В основном это работает

Мое решение, что при запуске приложения .net мы загружаем все данные (~ 12K строк), расшифровываем и добавляем в кэшированный список. И идея в том, что из этого списка мы обрабатываем в ViewForm, и когда обновляем данные, мы шифруем данные и обновляем обратно в базу данных Mysql.

Примерно для 5-10 строк он работает нормально для обработки, поиска и обновления на сервере, но после импорта 12К-данных в базу данных у нас возникла проблема, для загрузки инициалов при запуске и загрузке потребовалось 5-7 часов. Я должен найти решение для этого.

Код для расшифровки:

Using aesAlg As New AesCryptoServiceProvider()
        aesAlg.Key = Key
        aesAlg.IV = IV

        ' Create a decryptor to perform the stream transform.
        Dim decryptor As ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)

        Using msDecrypt As New MemoryStream()
            Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Write)
                csDecrypt.Write(cipherText, 0, cipherText.Length)
                csDecrypt.FlushFinalBlock()
                'Using srDecrypt As New StreamReader(csDecrypt)
                '    csDecrypt.FlushFinalBlock()
                plaintext = msDecrypt.ToArray
                '    Return plaintext
                'End Using
            End Using
        End Using
    End Using

Код для шифрования:

Using aesAlg As New AesCryptoServiceProvider()
        aesAlg.Key = Key
        aesAlg.IV = IV

        ' Create an encryptor to perform the stream transform.
        Dim encryptor As ICryptoTransform = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV)

        ' Create the streams used for encryption.
        Using msEncrypt As New MemoryStream()
            Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
                csEncrypt.Write(plainText, 0, plainText.Length)
                csEncrypt.FlushFinalBlock()
                encrypted = msEncrypt.ToArray()
            End Using
        End Using
    End Using

    ' Return the encrypted bytes from the memory stream.
    Return encrypted

Я использовал для загрузки все в кэшируемые при запуске (~ 40 свойств х 12K строк)

list = (From p In Entities.Products.ToList() 
Select New Product With {.ProductID = p.ProductID,
  .PROPERTY = p.PROPERTY,
  .PROPERTY = Decrypt(p.PROPERTY),
  .PROPERTY = Decrypt(p.PROPERTY),
  .PROPERTY = Decrypt(p.PROPERTY),
  .PROPERTY = Decrypt(p.PROPERTY),
  .PROPERTY = Decrypt(p.PROPERTY),
  .PROPERTY = Decrypt(p.PROPERTY),
  .PROPERTY = Decrypt(p.PROPERTY),}

). ToList ()

Кто-то сталкивался с этой проблемой, пожалуйста, дайте мне совет для решения.

...