Salve a tutti...
come faccio a rappresentare un numero del genere???
(2123^5069) mod (89*97)
il risultato è della potenza è
2,0394845864212709590275242722367e+16864
e non ci sta neanche nei double!!!!
Grazie mille
Salve a tutti...
come faccio a rappresentare un numero del genere???
(2123^5069) mod (89*97)
il risultato è della potenza è
2,0394845864212709590275242722367e+16864
e non ci sta neanche nei double!!!!
Grazie mille
Oppa
Lo puoi approssimare o se ti serve solo da visualizzare puoi sempre inserirlo in una stringa.
Ciao.![]()
non posso approssimarlo e non posso metterlo in una stringa...
da questa espressione ( (2123^5069) mod (89*97) ) io devo avere un numero intero che (sicuramente) sarà compreso tra 0 e 99!!
(è l'algoritmo per decifrare del RSA!)
grazie
Oppa
beh un numero preciso non lo puoi avere...quindi...ho lo tieni così come ti esce con un double...altrimenti potresti fare un tentativo con una variabile di tipo long però cavolo la vedo dura con tutti i numeri che ci sono. :master:
Ciao.![]()
Nei tipi "convenzionali" di java non ci sta!
Non posso approssimarlo e non posso metterlo in una stringa perchè su quel numero devo fare delle operazioni!
![]()
Oppa
Spero che sia solo a scopo didattico, visto che le classi crypto e il pacchetto BouncyCastle hanno già tutto quel che serve per manipolare i vari sistemi di cifratura. Comunque, usa BigInteger
es:
Curiosità: 2123^5069codice:import java.math.BigInteger; .... .... . . . BigInteger base = new BigInteger("2123"); BigInteger exp = new BigInteger("5069"); BigInteger mod = BigInteger.valueOf(89*97); BigInteger result = base.modPow(exp, mod); System.out.println("Modulo: "+result.toString());
http://www.andrea79.altervista.org/h...23%5E5069.html
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Si si...è a scopo didattico! devo far vedere passaggio per passaggio come funziona l'RSA!
BigInteger base = new BigInteger(valore);
BigInteger exp = new BigInteger(d);
BigInteger mod = BigInteger.valueOf(num);
BigInteger result = base.modPow(exp, mod);
System.out.println("Modulo: " + result.toString());
Mi da questo errore:
E:\Codici\Rsa\Rsa.java:391: BigInteger(long) has private access in java.math.BigInteger
BigInteger base = new BigInteger(valore);
Grazie mille
Oppa
Se ho passato Stringhe ai vari costruttori un motivo ci sarà.
Altrimenti usa il metodo statico BigInteger.valueOf(long) come ho fatto più sotto per il prodotto.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Prego
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"