elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: Duda en constructora en: 22 Octubre 2016, 14:56 pm
Hola JonaLamper.

En este caso produce el mismo resultado.

Saludos.
2  Programación / Java / Re: Ejercicio Java en: 14 Octubre 2016, 17:03 pm
Hola Luffy97.

Esta es mi solución al problema:

Código
  1. import java.nio.file.Files;
  2. import java.nio.file.Path;
  3. import java.nio.file.Paths;
  4.  
  5. public class XOR {
  6. public static void main(String[] args) throws Exception {
  7. Path source, dest;
  8. byte[] key;
  9. byte[] buffer;
  10.  
  11. if(args.length != 3) {
  12. System.out.println("Usage: XOR SOURCE DEST KEY");
  13. System.out.println("Encrypt SOURCE into DEST using XOR algorithm with KEY");
  14. System.exit(0);
  15. }
  16.  
  17. source = Paths.get(args[0]);
  18. dest = Paths.get(args[1]);
  19. key = args[2].getBytes();
  20. buffer = Files.readAllBytes(source);
  21.  
  22. for(int i = 0; i < buffer.length; i++) {
  23. buffer[i] =  (byte) (buffer[i] ^ key[i % key.length]);
  24. }
  25.  
  26. Files.write(dest, buffer);
  27. }
  28. }

Saludos.
3  Programación / Programación C/C++ / Re: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c) en: 12 Octubre 2016, 14:47 pm
Hola Undíamartes.

Esta es mi solución al problema:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 16
  5.  
  6. int main() {
  7. char input[MAX];
  8. char *p = input;
  9. int length = 0;
  10. char readed = 0;
  11. double carry = 1;
  12. double result = 0;
  13.  
  14. scanf("%s", p);
  15. length = strlen(p);
  16. p += length-1;
  17.  
  18. while(length > 0) {
  19. readed = *p;
  20. p--;
  21. length--;
  22.  
  23. if((readed-'0') >= 0 && (readed-'0') <= 9) {
  24. result += (readed-'0') * carry;
  25. carry *= 10;
  26. } else {
  27. switch(readed) {
  28. case 'M':
  29. carry = 1000000;
  30. break;
  31. case 'k':
  32. carry = 1000;
  33. break;
  34. case 'h':
  35. carry = 100;
  36. break;
  37. case 'a':
  38. carry = 10;
  39. p--;
  40. length--;
  41. break;
  42. case 'd':
  43. carry = 0.1;
  44. break;
  45. case 'c':
  46. carry = 0.01;
  47. break;
  48. case 'm':
  49. carry = 0.001;
  50. break;
  51. case 'u':
  52. carry = 0.000001;
  53. break;
  54. }
  55. }
  56. }
  57.  
  58. printf("%f\n", result);
  59. printf("%g\n", result);
  60. }

Esta es la salida del programa:

Código:
223u
0.000223
0.000223

Código:
27da298c
272.980000
272.98

Código:
252k35u
252000.000035
252000

Código:
23M263k
23263000.000000
2.3263e+07

Código:
265da34
2684.000000
2684

Saludos.
4  Programación / Java / Re: Algoritmo de la raiz enesima en: 11 Octubre 2016, 22:12 pm
Hola AlessioAuditore.

Esta es mi solución al problema:

Código
  1. import java.util.Scanner;
  2.  
  3. public class RaizEnesima {
  4. public static void main(String[] args) {
  5. float x = 0f;
  6. int n = 0;
  7. float result = 0f;
  8. float aux = 0.00001f;
  9. Scanner sc = new Scanner(System.in);
  10.  
  11. x = sc.nextFloat();
  12. n = sc.nextInt();
  13.  
  14. if(n == 0) {
  15. result = 1;
  16. } else {
  17. while(potenciaEnesima(result, n) < x) {
  18. result = result + aux;
  19. }
  20. }
  21.  
  22. System.out.printf("%.4f\n", result);
  23. }
  24.  
  25. public static float potenciaEnesima(float x, int n) {
  26. float tmp = 1;
  27.  
  28. for(int i = 0; i < n; i++) {
  29. tmp = tmp * x;
  30. }
  31.  
  32. return tmp;
  33. }
  34. }

La salida del programa es:

Código:
27
0
1.0000

Código:
27
3
3.0000

Código:
65978
12
2.5213

Código:
7867868238
7
25.9235

Saludos.

5  Programación / Programación C/C++ / Re: Problemas con raíces. en: 11 Octubre 2016, 07:38 am
Muchas gracias , pero el 0.00001 porque se pone? y de donde se saca el valor de la raiz o squareroot , yo se que tiene que ser menor que el numero , es que soy nuevo en esto.

Se prueba continuamente hasta llegar al resultado:

Primero se prueba si 0.00001 es la raíz cuadrada de input,
luego se prueba si 0.00002 es la raíz cuadrada de input,
luego se prueba si 0.00003 es la raíz cuadrada de input, etc.

Cada vez que se comprueba que squareRoot no es la raiz cuadrada de input, ((squareRoot * squareRoot) < input), se incrementa en 0.00001 y se vuelve a probar.

Simplemente se prueban todos los valores a partir del 0.00001 sucesivamente hasta detectar que se ha encontrado el que queremos.

Un ejemplo muy sencillo sería encontrar la raíz cuadrada del 9. Para ello podríamos comprobar si 1*1 es menor que 9 (sí lo es), si 2*2 es menor que 9 (sí lo es), si 3*3 es menor que 9 (no lo es). Como 3 es el primer número que hemos encontrado que al multiplicarlo por sí mismo no es menor que 9, ese es el resultado.

Saludos.
6  Programación / Programación C/C++ / Re: Problemas con raíces. en: 11 Octubre 2016, 02:20 am
Hola KaizerPlazz.

Te dejo el código fuente limpio y explicado:

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. float input = 0; // La entrada del usuario
  5. float squareRoot = 0; // La raiz cuadrada que buscamos
  6. float aux = 0.00001; // Cuanto más pequeño más precision en el resultado
  7.  
  8. scanf("%f", &input); //Leémos la entrada del usuario
  9.  
  10. /*
  11. Si el valor almacenado en squareRoot multiplicado por sí mismo
  12. no alcanza el valor de input, lo incrementamos un poco y repetimos
  13. */
  14. while((squareRoot * squareRoot) < input) {
  15. squareRoot = squareRoot + aux;
  16. }
  17.  
  18. printf("%.4f\n", squareRoot); // Imprimir resultado con cuatro decimales
  19.  
  20. return 0;
  21. }

Salida del programa:

Código:
2
1.4142

Código:
9
3.0000

Código:
163.281
12.7781

Saludos.
7  Programación / Programación C/C++ / Re: problemas con el ciclo en: 5 Octubre 2016, 19:30 pm
Hola kyosatoishy.

Esta es mi solución al problema:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Empleado {
  6. char nombre[32];
  7. char apellido[32];
  8. float peso;
  9. };
  10.  
  11. int main() {
  12. int numeroDeEmpleados;
  13.  
  14. cin >> numeroDeEmpleados;
  15.  
  16. struct Empleado listaDeEmpleados[numeroDeEmpleados];
  17.  
  18. for (int i = 0; i < numeroDeEmpleados; i++) {
  19. cin >> listaDeEmpleados[i].nombre;
  20. cin >> listaDeEmpleados[i].apellido;
  21. cin >> listaDeEmpleados[i].peso;
  22. }
  23.  
  24. for (int i = 0; i < numeroDeEmpleados; i++) {
  25. if (listaDeEmpleados[i].peso > 80) {
  26. cout << listaDeEmpleados[i].nombre << " ";
  27. cout << listaDeEmpleados[i].apellido << " ";
  28. cout << "pesa más de 80 kilogramos." << endl;
  29. } else {
  30. cout << listaDeEmpleados[i].nombre << " ";
  31. cout << listaDeEmpleados[i].apellido << " ";
  32. cout << "no pesa más de 80 kilogramos." << endl;
  33. }
  34. }
  35. }

Esta es la salida del programa:

Código:
3
Cristian
Rivas
60
Manuel
Castillo
87
Carla
Sanchez  
47
Cristian Rivas no pesa más de 80 kilogramos.
Manuel Castillo pesa más de 80 kilogramos.
Carla Sanchez no pesa más de 80 kilogramos.

Saludos.
8  Seguridad Informática / Hacking / Re: Duda Ataque Fuerza Bruta en: 27 Septiembre 2016, 18:53 pm
Hola Gödric.

Una de dos: o creas un archivo con las palabras del diccionario que cumplen que no poseen dos caracteres iguales en posiciones consecutivas (para probarlo después) o bien en tiempo de ejecución compruebas las palabras del diccionario para probar únicamente las palabras que cumplan que no poseen dos caracteres iguales en posiciones consecutivas.

Si vas a utilizar ese mismo conjunto de palabras más de una vez te recomiendo crear un nuevo archivo.

Saludos.
9  Seguridad Informática / Hacking / Re: efectividad de diccionarios de fuerza bruta? en: 27 Septiembre 2016, 18:38 pm
Hola Razzari.

Suponiendo que cada palabra está formada por 32 caracteres ASCII:

Si en vez de construir un diccionario con todas las posibles variaciones con repetición de esas diez palabras lo construyes únicamente con todas las posibles variaciones con repetición de tan solo cinco de las diez palabras, reduces el número de palabras de 11.111.111.110 (331,14GB) a 111.110 (3,39MB).
Ten en cuenta lo inusual de tener una clave con aparición de todas o muchas de las posibles palabras.

Si en vez de construir un diccionario con todas las posibles variaciones con repetición de esas diez palabras lo construyes con todas las posibles variaciones sin repetición de esas mismas diez palabras, reduces el número de palabras de 11.111.111.110 (331,14GB) a 3.628.800 (110,74MB).
Ten en cuenta lo inusual de tener una clave con algunas de las posibles palabras repetidas.

Saludos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines