1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
/* Author: Alberto Gil Tesa WebSite: http://giltesa.com License: CC BY-NC-SA 3.0 http://goo.gl/CTYnN File: Rsa.java Date: 26/02/2013 NOTAS: http://es.wikipedia.org/wiki/RSA */ import java.math.BigInteger; import java.security.SecureRandom; public class Rsa { private BigInteger n; // Clave compartida private BigInteger d; // Clave privada (no se comparte) private BigInteger k; // Clave publica para la otra parte private final int K = 0, D = 0, N = 1; /** * Constructor que genera las claves publica y privada de tamaño bitlen indicado. * * @param bitlen */ public Rsa(int bitlen) { // Calculamos los dos numeros primos p y q: SecureRandom r = new SecureRandom(); BigInteger p = new BigInteger(bitlen / 2, 100, r); BigInteger q = new BigInteger(bitlen / 2, 100, r); //n = p*q, v= (p-1)*(q-1) n = p.multiply(q); BigInteger v = ( p.subtract(BigInteger.ONE) ).multiply(q.subtract(BigInteger.ONE)); // Calculamos k como el numero impar mas pequeño relativamente primo con v k = new BigInteger("3"); while( v.gcd(k).intValue() > 1 ) k = k.add(new BigInteger("2")); // Calculamos d de modo que (d * k) MOD V = 1 d = k.modInverse(v); } /** * Pasa el BigInteger normal a cifrado usando la clave publica. * * @param message * @return */ public BigInteger encrypt(BigInteger message) { return message.modPow(k, n); } /** * Pasa el BigInteger normal a cifrado usando la clave publica recibida. * * @param message * @param key * @return */ public BigInteger encrypt(BigInteger message, BigInteger[] key) { return message.modPow(key[K], key[N]); } /** * Pasa el BigInteger de cifrado a normal usando la clave privada. * * @param message * @return */ public BigInteger decrypt(BigInteger message) { return message.modPow(d, n); } /** * Pasa el BigInteger de cifrado a normal usando la clave privada recibida. * * @param message * @return */ public BigInteger decrypt(BigInteger message, BigInteger[] key) { return message.modPow(key[D], key[N]); } /** * Devuelve la clave publica. * * @return */ public BigInteger[] getPublicKey() { return new BigInteger[] { k, n }; } /** * Devuelve la clave privada. * * @return */ public BigInteger[] getPrivateKey() { return new BigInteger[] { d, n }; } } |
Mes: febrero 2013
Baterias portatiles por USB
Últimamente se están poniendo de moda las baterías portátiles, sobre todo por la culpa de los móviles y sus fabricantes que se empeñan en hacerlos muy potentes y delgados y por consiguiente con baterías de muy poca capacidad.
Para solventar este problema, como digo, aparecieron las baterías portátiles que no son mas que una batería que se carga por USB y que después puede cargar otras cosas con la energía almacenada.
Leer másTarjeta SD con WiFi: SanDisk Eye-Fi
Las ultimas cámaras que están apareciendo en el mercado son ya pequeños ordenadores, hay alguna incluso con Android. Aunque esa no es la caracteristica de la que quería hablar, si no de que ahora incorporan incluso conexiones inalámbrica como puede ser WiFi o incluso una antena GPS para posicionar las fotografías.
Y es del WiFi de lo que quería hablar, ya que es una caracteristica realmente interesante. Cuando pensamos en WiFi seguramente pensemos en el del portátil o móvil que nos permite acceder a internet al conectarlo al router de casa. Pero lo cierto es que también nos permite transferir ficheros de un equipo a otro con o sin router de por medio. Y es esta la ventaja y sobre todo comodidad de la que quería tratar en esta entrada. Poder transferir nuestras fotografías al PC sin tener que conectar la cámara por cable o conectar la SD en el lector de tarjetas!
Leer másTablet ICOO D70 PROII
A mitad de mes anterior ya recibí la primera tablet, una PiPo S1 que ya revise en esta entrada, en esta ocasión toca la ICOO D70 PROII que me llego poco después y que he estado usando hasta hoy.
Leer más