Я новичок в программировании на C++, и для улучшения я хотел реализовать атаку Блейхенбахера. Ранее я создал один на Python и подумал, что это будет хорошим упражнением, чтобы немного изучить C++.
Чтобы использовать большое количество, я нашел библиотеку gmp. Я пытаюсь писать модульные тесты по ходу работы, чтобы быть уверенным, что все работает правильно. Для модульных тестов я использую острый.
В настоящее время возникает проблема: я получаю сообщение «TEST INTERRUPTED BY SIGSEGV», когда пытаюсь выполнить слишком много операторов?
Итак, тест здесь работает:
Но если бы я захотел создать еще один объект RSA, я получил бы SIGSEGV. Аналогично, этот тест также не пройден, если я раскомментирую последнюю строку:
class RSA {
private:
mpz_class e, d, n;
public:
RSA(gmp_randstate_ptr state);
getE() { return e; };
getD() { return d; };
getN() { return n; };
}
#include "rsa.hpp"
#include "gmp.h"
#include "gmpxx.h"
RSA::RSA(gmp_randstate_ptr state) {
// create rsa pair and set the values
mpz_t p, q, E, D, N, x, y, phi, u, t, gcd;
mpz_inits(p, q, E, D, N, x, y, phi, u, t, gcd, NULL);
mpz_set_ui(E, 65537);
mpz_setbit(u, 511);
mpz_setbit(t, 512);
mpz_urandomb(x, state, 512);
mpz_add(x, x, u);
mpz_mod(x, x, t);
mpz_urandomb(y, state, 512);
mpz_add(y, y, u);
mpz_mod(y, y, t);
mpz_nextprime(p, x);
mpz_nextprime(q, y);
mpz_mul(N, p, q);
int k = (mpz_sizeinbase(N, 2) + 7) / 8;
while (k != 128) {
mpz_urandomb(x, state, 512);
mpz_add(x, x, u);
mpz_mod(x, x, t);
mpz_urandomb(y, state, 512);
mpz_add(y, y, u);
mpz_mod(y, y, t);
mpz_nextprime(p, x);
mpz_nextprime(q, y);
mpz_mul(N, p, q);
k = (mpz_sizeinbase(N, 2) + 7) / 8;
}
mpz_sub_ui(p, p, 1);
mpz_sub_ui(q, q, 1);
mpz_mul(phi, p, q);
mpz_gcd(gcd, E, phi);
int res = mpz_invert(D, E, phi);
if (res == 0) {
printf("Failed to compute inverse of e!\n");
exit(1);
}
e = mpz_class(E);
d = mpz_class(D);
n = mpz_class(N);
mpz_clears(p, q, E, D, N, x, y, phi, u, t, gcd, NULL);
}
Конструктор вычисляет действительную пару rsa, а затем устанавливает частные поля.
Я действительно не понимаю, почему тест в какой-то момент начинает давать сбой.
/>Если у кого-то есть идеи, любая помощь будет очень признательна!
Я попробовал несколько разных методов тестирования, чтобы выяснить, где именно что-то идет не так, но не смог определить точку сбоя. Тесты также терпят неудачу, когда я создаю 3 объекта RSA и читаю более 2 полей. Таким образом, тест, который создает два объекта, а затем сравнивает n полей обоих объектов, ПРОЙДЕТ, но если я добавлю в этот тест третий объект и попытаюсь прочитать поле n этого объекта, я получу SIGSEGV.
Я также создал очень простой конструктор, в котором я буквально просто установил для полей заданное число:
RSA::RSA(gmp_randstate_ptr state) {
e = mpz_class(1); // the wrapper is not needed but also without I get SIGSEGV
d = mpz_class(2);
n = mpz_class(4);
}
Но даже в этом случае я получаю SIGSEGV, поэтому понятия не имею, что еще можно сделать.
Я новичок в программировании на C++, и для улучшения я хотел реализовать атаку Блейхенбахера. Ранее я создал один на Python и подумал, что это будет хорошим упражнением, чтобы немного изучить C++. Чтобы использовать большое количество, я нашел библиотеку gmp. Я пытаюсь писать модульные тесты по ходу работы, чтобы быть уверенным, что все работает правильно. Для модульных тестов я использую острый. В настоящее время возникает проблема: я получаю сообщение «TEST INTERRUPTED BY SIGSEGV», когда пытаюсь выполнить слишком много операторов? Итак, тест здесь работает: [code]void createRSA(void) { gmp_randstate_ptr state; gmp_randinit_default(state); RSA rsa1(state); RSA rsa2(state); RSA rsa3(state); RSA rsa4(state); // RSA rsa5(state); } [/code] Но если бы я захотел создать еще один объект RSA, я получил бы SIGSEGV. Аналогично, этот тест также не пройден, если я раскомментирую последнюю строку: [code]void createRSA(void) { gmp_randstate_ptr state; gmp_randinit_default(state); RSA rsa(state);
mpz_class d = rsa.getD(); mpz_class e = rsa.getE(); mpz_class n = rsa.getN();
RSA::RSA(gmp_randstate_ptr state) { // create rsa pair and set the values mpz_t p, q, E, D, N, x, y, phi, u, t, gcd; mpz_inits(p, q, E, D, N, x, y, phi, u, t, gcd, NULL); mpz_set_ui(E, 65537);
while (k != 128) { mpz_urandomb(x, state, 512); mpz_add(x, x, u); mpz_mod(x, x, t); mpz_urandomb(y, state, 512); mpz_add(y, y, u); mpz_mod(y, y, t); mpz_nextprime(p, x); mpz_nextprime(q, y);
mpz_mul(N, p, q);
k = (mpz_sizeinbase(N, 2) + 7) / 8; }
mpz_sub_ui(p, p, 1); mpz_sub_ui(q, q, 1); mpz_mul(phi, p, q); mpz_gcd(gcd, E, phi);
int res = mpz_invert(D, E, phi);
if (res == 0) { printf("Failed to compute inverse of e!\n"); exit(1); }
e = mpz_class(E); d = mpz_class(D); n = mpz_class(N);
mpz_clears(p, q, E, D, N, x, y, phi, u, t, gcd, NULL); } [/code] Конструктор вычисляет действительную пару rsa, а затем устанавливает частные поля. Я действительно не понимаю, почему тест в какой-то момент начинает давать сбой. />Если у кого-то есть идеи, любая помощь будет очень признательна! Я попробовал несколько разных методов тестирования, чтобы выяснить, где именно что-то идет не так, но не смог определить точку сбоя. Тесты также терпят неудачу, когда я создаю 3 объекта RSA и читаю более 2 полей. Таким образом, тест, который создает два объекта, а затем сравнивает n полей обоих объектов, ПРОЙДЕТ, но если я добавлю в этот тест третий объект и попытаюсь прочитать поле n этого объекта, я получу SIGSEGV. Я также создал очень простой конструктор, в котором я буквально просто установил для полей заданное число: [code]RSA::RSA(gmp_randstate_ptr state) { e = mpz_class(1); // the wrapper is not needed but also without I get SIGSEGV d = mpz_class(2); n = mpz_class(4); } [/code] Но даже в этом случае я получаю SIGSEGV, поэтому понятия не имею, что еще можно сделать.
Реорганизовывая большую библиотеку MP3 для MP3-плеера моего друга, мне нужно назвать тег Title ID3 так же, как имя файла, и делать это через свойства Windows занимает вечность, поэтому мне было интересно, есть ли у кого-нибудь идея о том, как...
Я использую эту программу для хранения значения MPZ, но когда я добавляю 0 (
40000000000000000000000000000000000000000 вместо 40000000000000000000000000000000000000 -> 38 0s вместо 37) I Get
/> free (): двойной бесплатный, обнаруженный в tcache 2...
Я использую Deepface Extract_faces с Retinaface, который отлично работает. «Проблема», с которой я сталкиваюсь, заключается в том, что она также выводит частичные лица и очень размытые.
detected_faces = DeepFace.extract_faces(...
Давайте рассмотрим следующий пример минималистичного приложения PyQt5:
из PyQt5 импортировать QtWidgets, uic, QtCore импорт системы, ОС, времени, запросов, pyperclip из PyQt5.QtCore импортировать Qt из PyQt5.QtWidgets импортировать QWidget,...
Я новичок в тестировании Android, и я наблюдал, как оба этих класса предлагаются, когда я объявляю класс с @RunWith() annotation. I searched for more documentation but there does not seem to be much. When and why should I use each one?