Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione
Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione
Nothing propone sul mercato non uno ma ben due auricolari nuovi: Ear di terza generazione e Ear (a) ossia un nuovo modello a basso costo pronto a ritagliarsi una fetta di mercato. Entrambi rimangono fedeli al marchio per il design ancora trasparente ma fanno un balzo in avanti notevole per qualità e soppressione del rumore.  
Sony FE 16-25mm F2.8 G: meno zoom, più luce
Sony FE 16-25mm F2.8 G: meno zoom, più luce
Il nuovo Sony FE 16-25mm F2.8G si aggiunge all'analogo 24-50mm per offrire una coppia di zoom compatti ma di apertura F2.8 costante, ideali per corpi macchina altrettanto compatti (vedi A7c ) e fotografia di viaggio.
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione
Motorola è decisa sulla sua strada: questo nuovo edge 50 Pro non guarda a specifiche stellari ma considera di più l’aspetto estetico. E si propone elegantemente con linee sinuose e un sistema operativo veloce. Peccato per un prezzo un po' fuori mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-03-2021, 18:49   #1
NuclearBlast
Senior Member
 
L'Avatar di NuclearBlast
 
Iscritto dal: Nov 2004
Città: Ancona
Messaggi: 3071
problema numeri molto grandi in c++

ciao a tutti,
ho questo problema. Ho realizzato un codice in c++ per la risoluzione dell'algoritmo di cifratura RSA, ma sbaglia a fare i calcoli perché vengono risultati molto grandi e nonostante come tipo dato ho messo unsigned long long int non funziona bene.
Qualcuno potrebbe aiutarmi a risolvere?
grazie
__________________
Affari OK: Ezran Tobruk! G30 VecchioEric BTinside GeneraleMarkus cristianobon70 Theodorakis accord62- Affare KO: Russo30
NuclearBlast è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2021, 10:15   #2
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2275
supponendo che sia davvero questo l'errore, perchè non butti un occhio su qualche libreria bigint?
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...

-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2021, 11:23   #3
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 2990
Puoi postare il codice che hai fatto per farci un idea?
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2021, 19:35   #4
NuclearBlast
Senior Member
 
L'Avatar di NuclearBlast
 
Iscritto dal: Nov 2004
Città: Ancona
Messaggi: 3071
#include <iostream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <cmath>

using namespace std;

int MCD(int a, int b) {
int risultato, resto;

while (b != 0) {
resto = a % b;
a = b;
b = resto;
}
risultato = a;

return risultato;
}

int main ()
{
#define MAX 2000
int N1, N2, mcd, i, k, p, q, n, fi, r, e, d, m;
unsigned long long int tc, td;
int coprimi[MAX];
for (i=0;i<MAX;i++) {
coprimi[i]=0;} //per inizializzare a 0 il vettore MAX

// ----- VERIFICA se 2 numeri sono COPRIMI cioè MCD=1 ----------
cout << "Inserire il 1° numero: ";
cin >> N1;
cout << "Inserire il 2° numero: ";
cin >> N2;
mcd=MCD(N1,N2);
cout << "Il MCD e': " << mcd<<endl;
if (mcd==1) {cout << N1<<" e "<<N2<<" sono coprimi"<<endl;}
if (mcd!=1) {cout << N1<<" e "<<N2<<" non sono coprimi"<<endl;}
// ---------------------------


// ---- ALGORITMO RSA --------

cout << "\n\nALGORITMO RSA"<<endl;
cout << "Inserire il numero primo p: "; cin >> p;
cout << "Inserire il numero primo q: "; cin >> q;
n=p*q;
fi=(p-1)*(q-1); // formula di eulero per determinare fi(n)
cout << "n = " << p<<" * "<<q<<" = "<<n<<endl;
p--;q--;
cout << "fi(n) = " << p<<" * "<<q<<" = "<<fi<<" coprimi "<<endl;

// determina tutti i numeri comprimi di n e li inserisce nel vettore coprimi
i=1;k=0;
while (i<=n){
mcd=MCD(i,n);
if (mcd==1)
{coprimi[k]=i;
k=k+1;
}
i++;
}

cout<<"\nVisualizzo gli elementi coprimi \n";
for (i=0;i<MAX;i++) {
if (coprimi[i]!=0) cout<<coprimi[i]<<'\t';
}

cout<<"\nscegli chiave pubblica = ";
cin>>e;

//determina la chiave privata
k=0;
while (k>=0){
r=(k*fi+1)%e;
cout<<k<<"\t"<<r<<endl;
if (r==0)
{
d=(k*fi+1)/e;
k=-10;}
else k++;
}
cout<<"\nLa chiave privata = "<<d<<endl;

cout<<"\nscegli m = ";
cin>>m;
tc=pow(m,e);
tc=tc%n;

td=pow(tc,d);
td=td%n;
cout<<"messaggio cifrato = "<<tc<<endl;
cout<<"messaggio decifrato = "<<td<<endl;
return 0;
}
__________________
Affari OK: Ezran Tobruk! G30 VecchioEric BTinside GeneraleMarkus cristianobon70 Theodorakis accord62- Affare KO: Russo30

Ultima modifica di NuclearBlast : 10-03-2021 alle 19:38.
NuclearBlast è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2021, 20:07   #5
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
guardando qui con unsigned long long int hai a disposizione 64 bit ma si può arrivare a 128, compilatore permettendo.

Dovresti identare il codice per una migliore lettura e comprensione

Codice:
#include <iostream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <cmath>

using namespace std;

int MCD(int a, int b) {
	int risultato, resto;

	while (b != 0) {
		resto = a % b;
		a = b;
		b = resto;
	}
	risultato = a;

	return risultato;
}

int main ()
{
#define MAX 2000
	int N1, N2, mcd, i, k, p, q, n, fi, r, e, d, m;
	unsigned long long int tc, td;
	int coprimi[MAX];
	for (i=0;i<MAX;i++) {
		coprimi[i]=0;} //per inizializzare a 0 il vettore MAX

	// ----- VERIFICA se 2 numeri sono COPRIMI cioè MCD=1 ----------
	cout << "Inserire il 1° numero: ";
	cin >> N1;
	cout << "Inserire il 2° numero: ";
	cin >> N2;
	mcd=MCD(N1,N2);
	cout << "Il MCD e': " << mcd<<endl;
	if (mcd==1) {cout << N1<<" e "<<N2<<" sono coprimi"<<endl;}
	if (mcd!=1) {cout << N1<<" e "<<N2<<" non sono coprimi"<<endl;}
	// ---------------------------


	// ---- ALGORITMO RSA --------

	cout << "\n\nALGORITMO RSA"<<endl;
	cout << "Inserire il numero primo p: "; cin >> p;
	cout << "Inserire il numero primo q: "; cin >> q;
	n=p*q;
	fi=(p-1)*(q-1); // formula di eulero per determinare fi(n)
	cout << "n = " << p<<" * "<<q<<" = "<<n<<endl;
	p--;q--;
	cout << "fi(n) = " << p<<" * "<<q<<" = "<<fi<<" coprimi "<<endl;

	// determina tutti i numeri comprimi di n e li inserisce nel vettore coprimi
	i=1;k=0;
	while (i<=n){
		mcd=MCD(i,n);
		if (mcd==1)
		{coprimi[k]=i;
			k=k+1;
		}
		i++;
	}

	cout<<"\nVisualizzo gli elementi coprimi \n";
	for (i=0;i<MAX;i++) {
		if (coprimi[i]!=0) cout<<coprimi[i]<<'\t';
	}

	cout<<"\nscegli chiave pubblica = ";
	cin>>e;

	//determina la chiave privata
	k=0;
	while (k>=0){
		r=(k*fi+1)%e;
		cout<<k<<"\t"<<r<<endl;
		if (r==0)
		{
			d=(k*fi+1)/e;
			k=-10;}
		else k++;
	}
	cout<<"\nLa chiave privata = "<<d<<endl;

	cout<<"\nscegli m = ";
	cin>>m;
	tc=pow(m,e);
	tc=tc%n;

	td=pow(tc,d);
	td=td%n;
	cout<<"messaggio cifrato = "<<tc<<endl;
	cout<<"messaggio decifrato = "<<td<<endl;
	return 0;
}

Ultima modifica di misterx : 10-03-2021 alle 20:10.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2021, 12:20   #6
NuclearBlast
Senior Member
 
L'Avatar di NuclearBlast
 
Iscritto dal: Nov 2004
Città: Ancona
Messaggi: 3071
e come si fa a portare a 128 bit?
__________________
Affari OK: Ezran Tobruk! G30 VecchioEric BTinside GeneraleMarkus cristianobon70 Theodorakis accord62- Affare KO: Russo30
NuclearBlast è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2021, 14:40   #7
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2275
in ogni caso, la chiave di tutto è questa
Codice PHP:
tc=pow(m,e);
tc=tc%n;

td=pow(tc,d);
td=td%n
è qua che devi lavorare, e trovare strade alternative, come ad esempio in questo link
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...

-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2022, 15:24   #8
dileoa
Member
 
Iscritto dal: Sep 2005
Messaggi: 80
problema numeri molto grandi in c++

Ho avuto lo stesso problema nello scrivere classi che implementano RSA e l'ho risolto usando le librerie BOOST (https://www.boost.org/) che consentono di maneggiare numeri lunghi 1048 bit o maggiori.
ADL
dileoa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione Nothing Ear e Ear (a): gli auricolari per tutti ...
Sony FE 16-25mm F2.8 G: meno zoom, più luce Sony FE 16-25mm F2.8 G: meno zoom, più lu...
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione Motorola edge 50 Pro: design e display al top, m...
Ecovacs Goat G1-800, mettiamo alla prova il robot tagliaerba facile ed efficace Ecovacs Goat G1-800, mettiamo alla prova il robo...
ASUS ProArt 1, un PC completo ad altissime prestazioni per creator e non solo ASUS ProArt 1, un PC completo ad altissime prest...
S8 MaxV Ultra e Qrevo Pro: i nuovi aspir...
Goldene: creati, per la prima volta, fog...
La cinese Dongfeng produrrà i suo...
NVIDIA SFF Enthusiast GPU: nuovo program...
Alfa Romeo, il CEO avverte i politici: a...
Nothing Ear e Ear (a): l'evoluzione degl...
HR, customer experience, procurement: ec...
Utenti Discord, attenzione! Spy.Pet &egr...
Ottimi prezzi per i controller DualSense...
Taglio di prezzo di 150 euro per SAMSUNG...
Inversione di tendenza su iPhone 17 Plus...
Audi mostra la nuova e-tron GT, migliora...
Google ha licenziato 28 dipendenti che h...
OnePlus 13: semplice aggiornamento o ver...
Formazione: aperte le candidature per Hu...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www1v