Я пытаюсь расшифровать зашифрованные данные AES внутри стандартного приложения логического приложения, но код, который отлично работает в функциональном приложении, не работает внутри логических приложений. < /p>
Problem
< /code>
Ключ AES хранится в штуке Azure Key в виде базового 64-кодированного строки
(32 байта → AES-256). < /p>
< /li>
. Зашифрованная полезная нагрузка. < /p>
< /li>
Тот же клавиша + комбинация цифрового текста успешно расширяет в функциональном приложении. < /p>
< /li>
в стандарте логического приложения, действие inline c# с помощью этой ошибки: < /p>
< /br /li?InvokeFunctionFailed
The function 'CSharp_wf-infringement-process-transaction_execute_csharp_script_code.csx'
failed with the error 'Exception binding parameter 'context'' when executing.
Please verify function code is valid.
< /code>
inline c# код в стандартном приложении логического приложения < /p>
// Add the required libraries
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public static async Task Run(WorkflowContext context, ILogger log)
{
var composeOutput = (await context.GetActionResults("Compose").ConfigureAwait(false)).Outputs;
string KeyStringStr = composeOutput["KeyString"].ToString();
string Base64DataStr = composeOutput["Base64Data"].ToString();
if (string.IsNullOrEmpty(KeyStringStr))
throw new ArgumentException("AES key is missing.");
if (string.IsNullOrEmpty(Base64DataStr))
throw new ArgumentException("Ciphertext is missing.");
byte[] key = Convert.FromBase64String(KeyStringStr);
byte[] allBytes = Convert.FromBase64String(Base64DataStr);
byte[] iv = allBytes.Take(16).ToArray();
byte[] cipherBytes = allBytes.Skip(16).ToArray();
string decryptedText;
using (var aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
using var ms = new MemoryStream();
using (var cryptoStream = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);
cryptoStream.FlushFinalBlock();
}
decryptedText = Encoding.UTF8.GetString(ms.ToArray());
}
return new { DecryptedText = decryptedText };
}
public class Results
{
public string DecryptedText { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... h-pkcs7-wo