UWP: AES encryption and decryption

后端 未结 2 1828
小蘑菇
小蘑菇 2020-12-21 14:56

I had a simple class to do some basic local encryption for Windows Phone 8. I wanted to use the class again in a new UWP Windows 10 app for the Windows Store. Unfortunately

2条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-21 15:21

    Cleaner code

        public static async Task EncryptAesFileAsync(StorageFile fileForEncryption, string aesKey256, string iv16lenght)
        {
    
            bool success = false;
            try
            {
                //Initialize key
                IBuffer key = Convert.FromBase64String(aesKey256).AsBuffer();
                var m_iv = Convert.FromBase64String(iv16lenght).AsBuffer();
                SymmetricKeyAlgorithmProvider provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7);
                var m_key = provider.CreateSymmetricKey(key);
    
                //secured data
                IBuffer data = await FileIO.ReadBufferAsync(fileForEncryption);
                IBuffer SecuredData = CryptographicEngine.Encrypt(m_key, data, m_iv);
                await FileIO.WriteBufferAsync(fileForEncryption, SecuredData);
                success = true;
            }
            catch (Exception ex)
            {
                success = false;
                DialogHelper.DisplayMessageDebug(ex);
            }
            return success;
    
        }
        public static async Task DecryptAesFileAsync(StorageFile EncryptedFile, string aesKey256, string iv16lenght)
        {
    
            bool success = false;
            try
            {
                //Initialize key
                IBuffer key = Convert.FromBase64String(aesKey256).AsBuffer();
                var m_iv = Convert.FromBase64String(iv16lenght).AsBuffer();
                SymmetricKeyAlgorithmProvider provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7);
                var m_key = provider.CreateSymmetricKey(key);
    
                //Unsecured Data
                IBuffer data = await FileIO.ReadBufferAsync(EncryptedFile);
                IBuffer UnSecuredData = CryptographicEngine.Decrypt(m_key, data, m_iv);
                await FileIO.WriteBufferAsync(EncryptedFile, UnSecuredData);
                success = true;
            }
            catch (Exception ex)
            {
                success = false;
                DialogHelper.DisplayMessageDebug(ex);
            }
            return success;
    
        }
    

提交回复
热议问题