Для моего университетского проекта я искал анализатор / оценщик, поддерживающий как основные формулы, так и более сложные уравнения (особенно повторяющиеся операторы). Я нашел очень хорошую библиотеку с открытым исходным кодом для JAVA и .NET под названием mXparser.
http://mathparser.org/ / g4] http://mathparser.org/mxparser-tutorial/ И несколько примеров 1 - Простая механика 2 - Пользовательские аргументы и константы 3 - Пользователь определенные функции 4 - Итерация С наилучшими пожеланиями Expression e = new Expression("( 2 + 3/4 + sin(pi) )/2");
double v = e.calculate()
Argument x = new Argument("x = 10");
Constant a = new Constant("a = pi^2");
Expression e = new Expression("cos(a*x)", x, a);
double v = e.calculate()
Function f = new Function("f(x, y, z) = sin(x) + cos(y*z)");
Expression e = new Expression("f(3,2,5)", f);
double v = e.calculate()
Expression e = new Expression("sum( i, 1, 100, sin(i) )");
double v = e.calculate()
AES не разворачивает данные. Кроме того, вывод обычно не будет сжимаем; если Вы намереваетесь сжать свои данные, сделайте так прежде, чем зашифровать их.
Однако примечание, что Шифрование AES обычно объединяется с дополнение , который будет увеличивать размер данных (хотя только на несколько байтов).
AES не разворачивает данные, за исключением нескольких байтов дополнения в конце последнего блока.
получающиеся данные не сжимаемы, во всяком случае, потому что они в основном случайны - никакой основанный на словаре алгоритм не в состоянии эффективно сжать их. Лучшая практика должна сжать данные сначала, затем зашифровать их.
Распространено сжать данные перед шифрованием. Сжатие его впоследствии не работает, потому что зашифрованные данные AES кажутся случайными (что касается любого хорошего шифра кроме любых заголовков и этажерки).
Однако сжатие может представить атаки по сторонним каналам в некоторых контекстах, таким образом, необходимо проанализировать собственное использование. О таких нападениях недавно сообщили по зашифрованному VoIP: суть - то, что различные слоги создают характерные изменения в скорости передачи, когда сжато с VBR, потому что некоторые звуки сжимаются лучше, чем другие. Некоторые (или все) слоги могут поэтому быть восстанавливаемыми с достаточным анализом, так как данные передаются на уровне, это сгенерировано. Фиксация или использовать (менее эффективное) сжатие CBR или использовать буфер для передачи на постоянном уровне независимо от скорости передачи данных, выходящей из кодера (увеличивающий задержку).
AES превращает 16-байтовые входные блоки в 16-байтовые выходные блоки. Единственное расширение является к раунду данными до целого числа блоков.
Я - абсолютно уверенное Шифрование AES, не добавляет ничто к зашифрованным данным, так как это выдало бы информацию о переменных состояния, и это - Плохая Вещь когда дело доходит до криптографии.
, Если Вы хотите смешать сжатие и шифрование, сделайте их в том порядке. Причиной являются зашифрованные данные (идеально) похож на полностью случайные данные, и алгоритмы сжатия закончат тем, что делали данные больше, из-за его неспособности на самом деле сжать любой из него и наверху бухгалтерии, которая идет с любым форматом сжатого файла.
@freespace и другие: Одна из вещей, которые я помню от своих криптографических классов, - то, что Вы не должны сжимать свои данные перед шифрованием, потому что некоторые повторяемые блоки сжатого потока (как заголовки раздела, например) могут облегчить взламывать Ваше шифрование.
Если сжатие необходимо, делают это перед шифрованием.
Нет. Единственное изменение будет небольшим количеством дополнения для выравнивания данных к размеру блока
Однако при сжатии довольного примечание, что необходимо сделать это прежде шифрование. Зашифрованные данные должны обычно быть неотличимы от случайных данных, что означает, что они не сожмутся.