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


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Pseudo Random Encryption Algorithm 1.0 RC2 by APOKLIPTICO.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Pseudo Random Encryption Algorithm 1.0 RC2 by APOKLIPTICO.  (Leído 7,764 veces)
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.872


Toys in the attic.


Ver Perfil
Pseudo Random Encryption Algorithm 1.0 RC2 by APOKLIPTICO.
« en: 30 Octubre 2008, 22:03 »

Hola gente, bueno despues de un tiempo, paso a postear la última creación de mi mente, el Pseudo Random Encryption Algorithm o P.R.E.A.

Se basa en una clase generadora de números pseudoaleatorios utilizando una variante del algoritmo Blum Blum Shub. Se le pone como seed un password (pszPassword), se inicializa la variable, y empeiza a tirar números pseudoaleatorios referentes al password que se le puso que no puede ser menor a 6 bytes, y que se scramblea de tal manera que se pueda utilizar toda la amplitud del codigo ascii para trabajar. Lo bueno q tiene este algoritmo es que a la clase le hize un análisis estadístico para dar ciclos largos y que no se repitan los números, o si se repiten, que sean impredecibles estas repeticiones. Otro de los aspectos que tiene la clase, es que se debe inicializar, y normalmente tarda (en mi PC), de 100 a 300 milisegundos, lo que hace imposible el ataque por fuerza bruta, ya que se podrían probar con suerte 10 passwords x segundo. Sin embargo, tiene un contra, que el algoritmo en si, para mantener la seguridad y la pseudoaleatoriedad, no es muy rápido, en mi computadora (Benchmark Super PI = 48 segundos) procesa a 250 Kb/segundo, aparte de los 100-300 segundos que tarda en inicializar cada generador pseudoaleatorio (usa 2).

Ak tienen un par de artículos de wikipedia para entender un poco más el concepto en el que se basa la clase:

Blum Blum Shub
Generador Pseudoaleatorio de números

El código es GNU GPL asi que el que quiera modificarlo, que lo haga y si necesita ayuda, que me contacte...

Aqui les dejo el código que se compone de dos archivos:

HEADERS.H

Código
  1. #include <iostream>
  2. #include <math.h>
  3. #include <windows.h>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7. // General Public License 2008 by APOKLIPTICO.
  8. // Command line: PREA.exe "Filename"
  9. char szVersion[5]; // Version
  10. char szHeader[29]; // Header
  11. char *pszDump; // Dump de memoria del archivo a cifrar.
  12. ifstream inFile;
  13. ofstream outFile;
  14. long Fsize; // Tamaño del archivo
  15. filebuf *pbuf; // Manejo del buffer
  16.  
  17. int CheckFile(char szFilename[]); //Chequea que el archivo se pueda abrir y lo dumpea en la Heap.
  18. void GetLineEx(char *pszVar, unsigned int len, bool masked = false);  // Funcion para obtener caracteres de la pantalla pero de manera segura y con la opcion de usar "*".
  19. void Perc(double max, double value); // Muestra el porcentaj.
  20.  
  21. // Pseudo Random Generator Class BY APOKLIPTICO
  22. class PRG
  23. {
  24. public:
  25. static unsigned char *pszPassword; // Variable estatica para el password
  26. unsigned long max; // Numero máximo que devolvera la funcion Next fuera de la clase.
  27. unsigned long nextv(); // Devuelve un numero pseudoaleatorio.
  28. PRG();
  29. private:
  30. bool antihang; // Para evitar cuelgues del algoritmo.
  31. int passcount; // Se utiliza como incrementador en el antihang.
  32. int passlen; // Longitud del Password. (No puede ser menor a 6 caracteres).
  33. unsigned char *pszScramPW; // Variable para manejar el password individualmente.
  34. unsigned long modulus; // Módulo de la funcion Blum Blum Shub
  35. unsigned long double x; // Seed y salida de la funcion Blum Blum Shub.
  36. unsigned long intmax; // Numero maximo que devolvera la funcion next (solo para manejos internos de la clase).
  37. void init(); // Inicializador del motor pseudoaleatorio.
  38. void scramble(bool once = false); // Para scramblear el password.
  39. unsigned long next(bool internal = false); // Devuelve un numero pseudoaleatorio.
  40. unsigned long primegen(unsigned long primenum1, unsigned long primenum2); // Devuelve la multiplicacion de dos numeros primos.
  41. };
  42. unsigned char *PRG::pszPassword;
  43.  
  44. PRG::PRG()
  45. {
  46. antihang = false;
  47. passcount = 0;
  48. max = 0;
  49. passuse = 0;
  50. passlen = strlen(reinterpret_cast<char*>(pszPassword)); // Saca el tamaño del password.
  51. pszScramPW = new unsigned char[passlen];
  52. strcpy(reinterpret_cast<char*>(pszScramPW), reinterpret_cast<char*>(pszPassword));
  53. x = pszScramPW[5];
  54. modulus = primegen(pszScramPW[0], pszScramPW[1]); // Genera el primer módulo.
  55. scramble(); // Scramblea el password.
  56. modulus = primegen(pszScramPW[2], pszScramPW[3]); // Cambia el modulo.
  57. intmax = pszScramPW[0] * pszScramPW[1] + 1; // Indica el máximo de numeros tendrá que descartar el inicializador.
  58. scramble(); // Scramblea el password.
  59. init(); // Inicializa el motor pseudoaleatorio.
  60. }
  61.  
  62. unsigned long PRG::primegen(unsigned long primenum1, unsigned long primenum2)
  63. {
  64. unsigned long outf1 = 0;
  65. int i = 0;
  66. int j = 0;
  67. unsigned long outf2 = 0;
  68. for(i = 0; i < primenum1; i++)
  69. {
  70. bool prime = true;
  71. outf1++;
  72. for(j=2; j<outf1 ; j++)
  73. {
  74. if (outf1%j==0){prime = false;}
  75. }
  76. if(!prime)
  77. {
  78. i--;
  79. }
  80. }
  81. for(i = 0; i < primenum2; i++)
  82. {
  83. bool prime = true;
  84. outf2++;
  85. for(j=2; j<outf2 ; j++)
  86. {
  87. if (outf2%j==0){prime = false;}
  88. }
  89. if(!prime)
  90. {
  91. i--;
  92. }
  93. }
  94. return (outf1 * outf2);
  95. }
  96.  
  97. void PRG::scramble(bool once)
  98. {
  99. intmax = 254; // la clase devolverá numeros hasta el 254.
  100. if(once) // Si solo se scramblea una vez.
  101. {
  102. for (long i = 0; i < passlen; i++)
  103. {
  104. pszScramPW[i] = (254 * pszScramPW[i]) / next(true) + 1; // Se hace regla de tres y se cambia ese caracter a uno entre 1 y 255.
  105. pszScramPW[i] = pszScramPW[i];
  106. }
  107. }
  108. else // Si se scramblea varias veces
  109. {
  110. for (long j = 0; j < next(true); j++) // Se elige una cantidad pseudoaleatoria de veces hasta 254.
  111. {
  112. for (long i = 0; i < passlen; i++)
  113. {
  114. pszScramPW[i] = (254 * pszScramPW[i]) / next(true) + 1;  // Se hace regla de tres y se cambia ese caracter a uno entre 1 y 255.
  115. pszScramPW[i] = pszScramPW[i];
  116. }
  117.  
  118. }
  119. }
  120. }
  121.  
  122. unsigned long PRG::nextv() // Funcion publica para devolver numeros pseudoaleatorios.
  123. {
  124. unsigned long outf;
  125. outf = next(false);
  126. return outf;
  127. }
  128.  
  129. void PRG::init()
  130. {
  131. unsigned long maxs;
  132. maxs = next(true);
  133. for(unsigned long i = 0; i < maxs; i++) // Devuelve una cantidad pseudoaleatorias de numeros que se descartaran.
  134. {
  135. unsigned long nouse;
  136. nouse = next(true);
  137. }
  138. }
  139.  
  140. unsigned long PRG::next(bool internal)
  141. {
  142. unsigned long outf;
  143. int passel = 0;
  144. if(antihang) // Routina para evitar cuelgues. Se alternan entre la consecutiva y la pseudoaleatoria.
  145. {
  146. passel = passcount; // Se utilizará un caracter consecutivo del password.
  147. passcount++;
  148. if(passcount >= passlen){passcount = 0;}
  149. antihang = false;
  150. }
  151. else
  152. {
  153. passel = ((passlen - 1) * x) / modulus; // Se utilizará un caracter pseudoaleatorio del password.
  154. antihang = true;
  155. }
  156. x = static_cast<unsigned long>(pow(x * pszScramPW[passel], 2)) % modulus + 1; // Fórmula Blum Blum Shub modificada.
  157. if(internal)
  158. {
  159. outf = ((intmax - 1) * x) / modulus + 1; // Si es interna.
  160. }
  161. else
  162. {
  163. outf = ((max - 1) * x) / modulus + 1; // Si es derivado de la funcion nextv().
  164. scramble(true); // Se escramblea una vez.
  165. }
  166. return outf;
  167. }
  168. // End of Pseudo Random Generator Class
  169.  
  170. // Code supplied by LuckY
  171. bool keyHit(void)
  172. {
  173.  HANDLE  stdIn = GetStdHandle(STD_INPUT_HANDLE);
  174.  
  175.  DWORD   saveMode;
  176.  GetConsoleMode(stdIn, &saveMode);
  177.  SetConsoleMode(stdIn, ENABLE_PROCESSED_INPUT);
  178.  
  179.  bool  ret = false;
  180.  
  181.  if (WaitForSingleObject(stdIn, 1) == WAIT_OBJECT_0) ret = true;
  182.  
  183.  SetConsoleMode(stdIn, saveMode);
  184.  
  185.  return(ret);
  186. }
  187.  
  188. bool getChar(TCHAR &ch)
  189. {
  190.  bool    ret = false;
  191.  
  192.  HANDLE  stdIn = GetStdHandle(STD_INPUT_HANDLE);
  193.  
  194.  DWORD   saveMode;
  195.  GetConsoleMode(stdIn, &saveMode);
  196.  SetConsoleMode(stdIn, ENABLE_PROCESSED_INPUT);
  197.  
  198.  if (WaitForSingleObject(stdIn, INFINITE) == WAIT_OBJECT_0)
  199.  {
  200.    DWORD num;
  201.    ReadConsole(stdIn, &ch, 1, &num, NULL);
  202.  
  203.    if (num == 1) ret = true;
  204.  }
  205.  
  206.  SetConsoleMode(stdIn, saveMode);
  207.  
  208.  return(ret);
  209. }
  210.  
  211. TCHAR getChar(void)
  212. {
  213.  TCHAR ch = 0;
  214.  getChar(ch);
  215.  return(ch);
  216. }
  217. // End of Code supplied by LuckY
  218.  
  219. void GetLineEx(char *pszVar, unsigned int len, bool masked)
  220. {
  221. for(int i = 0;!((i==len) | (pszVar[i - 1] == 13)); i++)
  222. {
  223. pszVar[i] = getChar();
  224. if(pszVar[i] == 8)
  225. {
  226. if(i==0)
  227. {
  228. i--;
  229. }
  230. if(i>0)
  231. {
  232. cout.put(8);
  233. cout.put(0);
  234. cout.put(8);
  235. i=i-2;
  236. }
  237. }
  238. else
  239. {
  240. if(!masked){if(!(pszVar[i] == 13)){cout << pszVar[i];}}
  241. else{if(!(pszVar[i] == 13)){cout << "*";}}
  242. }
  243. if((pszVar[i] == 13) && (i == 0)){i--;}
  244. }
  245. pszVar[i] = 0;
  246. }
  247.  
  248. void Perc(double max, double value)
  249. {
  250. if(!(abs(10000 / max * value) == abs(10000 / max * (value - 1))))
  251. {
  252. cout.put(8);
  253. cout.put(8);
  254. cout.put(8);
  255. cout.put(8);
  256. }
  257. if(!(abs(100 / max * value) == abs(100 / max * (value - 1))))
  258. {
  259. if(100 / max * value < 10)
  260. {
  261. cout.put(8);
  262. cout.put(8);
  263. cout << abs((100 / max * value)) << "%";
  264. }
  265. if((100 / max * value < 100) && (100 / max * value >= 10))
  266. {
  267. if(!(abs(100/max*(value - 1)) < 10)){cout.put(8);}
  268. cout.put(8);
  269. cout.put(8);
  270. cout << abs((100 / max * value)) << "%";
  271. }
  272. if((100 / max * value == 100))
  273. {
  274. cout.put(8);
  275. cout.put(8);
  276. cout.put(8);
  277. cout << abs((100 / max * value)) << "%";
  278. }
  279. }
  280. if(!(abs(10000 / max * value) == abs(10000 / max * (value - 1))))
  281. {
  282. cout << " [";
  283. if((value / 4 - abs(value / 4)) * 4 == 0){cout << "-";}
  284. if((value / 4 - abs(value / 4)) * 4 == 1){cout.put(92);}
  285. if((value / 4 - abs(value / 4)) * 4 == 2){cout << "|";}
  286. if((value / 4 - abs(value / 4)) * 4 == 3){cout << "/";}
  287. cout << "]";
  288. }
  289.  
  290. }
  291.  
  292. int CheckFile(char szFilename[])
  293. {
  294. inFile.open(szFilename, ios::in | ios::binary);
  295. if(inFile.is_open())
  296. {
  297. cout << "OK!\n*  Getting file size...";
  298. pbuf=inFile.rdbuf();
  299. Fsize=pbuf->pubseekoff (0,ios::end,ios::in);
  300. pbuf->pubseekpos (0,ios::in);
  301. if(Fsize<1)
  302. {
  303. cout << "Error.\n  File is empty.";
  304. inFile.close();
  305. return 0;
  306. }
  307. pszDump = new char[Fsize + 29];
  308. cout << "OK!\n*  Loading file (May take a while)...";
  309. if(pszDump)
  310. {
  311. inFile.read(pszDump, Fsize);
  312. inFile.close();
  313. cout << "OK!\n";
  314. }
  315. else
  316. {
  317. cout << "Error.\n";
  318. return 0;
  319. }
  320. bool Comp = true;
  321. for(int i = 0;i<29;i++)
  322. {
  323. if(!(szHeader[i] == pszDump[i]))
  324. {
  325. Comp=false;
  326. break;
  327. }
  328. }
  329. if(Comp){return 2;}
  330. else{return 1;}
  331. }
  332. else
  333. {
  334. cout << "Error.\n";
  335. return 0;
  336. }
  337. }
  338.  

Main.CPP

Código
  1. #include "headers.h"
  2. void usage(char **args);
  3.  
  4. // General Public License 2008 by APOKLIPTICO.
  5. int main(int argc, char** argv)
  6. {
  7. if(!(argc == 2))
  8. {
  9. usage(argv);
  10. exit(0);
  11. }
  12. strcpy(szVersion, "1.0"); // Escribe la version.
  13. strcpy(szHeader, "Encrypted with PREA "); // Prepara el Header.
  14. strcat(szHeader, szVersion);
  15. strcat(szHeader, "\x01\x01\xFF\xFF");
  16. cout << "       ----     Pseudo Random Encryption Algorithm Ver " << szVersion << "     ----       \n";
  17. cout << "\n       ----              GPL Licensed 2008 by Apokliptico      ----        \n\n";
  18. cout << "*  Opening File...";
  19. int ret = CheckFile(argv[1]);
  20. if(ret==0){cout << "*  Error Opening file.\n";}
  21. if(ret==1)
  22. {
  23. cout << "*  File is not Encrypted.\n";
  24. bool Comp;
  25. do
  26. {
  27. cout << "*  Choose New Password(6 - 32 Chars):";
  28. GetLineEx(szPassword, 32, true);
  29. cout << "\n*  Confirm New Password:";
  30. char szPassword1[32];
  31. GetLineEx(szPassword1, 32, true);
  32. Comp = true;
  33. for(int q = 0;q<strlen(szPassword);q++)
  34. {
  35. if(!(szPassword[q] == szPassword1[q]))
  36. {
  37. Comp=false;
  38. cout << "\n*  Error Password don't match.";
  39. break;
  40. }
  41. }
  42. if(strlen(szPassword) < 6)
  43. {
  44. cout << "\n*  Error Password is too short.";
  45. Comp=false;
  46. }
  47. if(!Comp){cout << endl;}
  48. }while(!Comp);
  49. cout << "\n*  Password saved.\n*  Intializing PseudoRandom Generators...";
  50. PRG::pszPassword = new unsigned char[strlen(szPassword)];
  51. strcpy(reinterpret_cast<char *>(PRG::pszPassword), szPassword);
  52. PRG pseudo1; // Inicializa los dos PRGs.
  53. PRG pseudo2;
  54. pseudo1.max = 4; // Este se usara para decidir cuantas veces se deberá aplicar el XOR.
  55. pseudo2.max = 255; // Este devolverá el número para usar XOR.
  56. // Encrypt routine
  57. cout << "OK!\n*  Encrypting... 0% [-]";
  58. for(unsigned long i=0; i < Fsize; i++)
  59. {
  60. Perc(Fsize, i); // Imprime el porcentaje.
  61. int rep = pseudo1.nextv();
  62. for(int j=0; j < rep + 1; j++)
  63. {
  64. pszDump[i] = pseudo2.nextv() ^ pszDump[i]; // XOR.
  65. }
  66. }
  67. cout.put(8);
  68. cout.put(8);
  69. cout.put(8);
  70. cout.put(8);
  71. cout.put(8);
  72. cout.put(8);
  73. cout.put(8);
  74. cout << " 100%";
  75. cout << " OK!\n*  Opening output file...";
  76. outFile.open(argv[1], ios::out | ios::binary);
  77. if(outFile.is_open())
  78. {
  79. cout << "OK!\n*  Writing file...";
  80. outFile.write(szHeader, 29); // Escribe el header.
  81. outFile.write(pszDump, Fsize); // Escribe el archivo cifrado.
  82. outFile.close();
  83. cout << "OK!\n";
  84. }
  85. else
  86. {
  87. cout << "Error\n*  Error opening output file.\n";
  88. }
  89. }
  90. if(ret==2)
  91. {
  92. cout << "*  Encrypted File.\n";
  93. bool Comp = true;
  94. do
  95. {
  96. cout << "*  Password:";
  97. GetLineEx(szPassword, 32, true);
  98. cout << "\n*  Confirm Password:";
  99. char szPassword1[32];
  100. GetLineEx(szPassword1, 32, true);
  101. Comp = true;
  102. for(int q = 0;q<strlen(szPassword);q++)
  103. {
  104. if(!(szPassword[q] == szPassword1[q]))
  105. {
  106. Comp=false;
  107. cout << "\n*  Error Password don't match.";
  108. break;
  109. }
  110. }
  111. if(strlen(szPassword) < 6)
  112. {
  113. cout << "\n*  Error Password is too short.";
  114. Comp=false;
  115. }
  116. if(!Comp){cout << endl;}
  117. }while(!Comp);
  118. //Decrypt routine
  119. cout << "\n*  Password saved.\n*  Intializing PseudoRandom Generators...";
  120. PRG::pszPassword = new unsigned char[strlen(szPassword)];
  121. strcpy(reinterpret_cast<char *>(PRG::pszPassword), szPassword);
  122. PRG pseudo1;
  123. PRG pseudo2;
  124. pseudo1.max = 4;
  125. pseudo2.max = 255;
  126. pszDump = pszDump + 29;
  127. cout << "OK!\n*  Decrypting... 0% [-]";
  128. for(unsigned long i=0; i < Fsize - 29; i++)
  129. {
  130. Perc(Fsize, i);
  131. int rep = pseudo1.nextv();
  132. for(int j=0; j < rep + 1; j++)
  133. {
  134. pszDump[i] = pseudo2.nextv() ^ pszDump[i];
  135. }
  136. }
  137. cout.put(8);
  138. cout.put(8);
  139. cout.put(8);
  140. cout.put(8);
  141. cout.put(8);
  142. cout.put(8);
  143. cout.put(8);
  144. cout << " 100%";
  145. cout << " OK!\n*  Opening output file...";
  146. outFile.open(argv[1], ios::out | ios::binary);
  147. if(outFile.is_open())
  148. {
  149. cout << "OK!\n*  Writing file...";
  150. outFile.write(pszDump, Fsize - 29);
  151. outFile.close();
  152. cout << "OK!\n";
  153. }
  154. else
  155. {
  156. cout << "Error\n*  Error opening output file.\n";
  157. }
  158. }
  159. system("pause");
  160. return 0;
  161. }
  162.  
  163.  
  164. void usage(char **args)
  165. {
  166. cout << "       ----     Pseudo Random Encription Algorithm Ver " << szVersion << "     ----       \n";
  167. cout << "\n       ----              Copyleft 2008 by Apokliptico          ----        \n\n";
  168. cout << "Error:\n     USAGE: " << args[0] << " [Filename]\n\n";
  169. }
  170.  


No es un código muy profesional, no esperen constantes o cosas raras porque no me gustan XD, probablemente tenga un par de cosas que le quedaron del debugging, avisen asi las saco, probablemente en algun momento optimize aun mas la clase para hacerla más rápida y/o más segura, y si en algun momento tengo ganas, me voy a poner a hacer el Pseudo Random Hash Algorithm... XDD
Espero q les guste...
Un abrazo
APOKLIPTICO

PD: Si alguien tiene ganas de ponerse a pensar en un ataque contra el algoritmo, que avise asi le doy una mano para entenderlo...


« Última modificación: 4 Diciembre 2008, 03:49 por APOKLIPTICO » En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #1 en: 30 Octubre 2008, 22:15 »

Muy buen codigo  ;D siempre quise hacerme un algoritmo de encriptacion pero soy un negado de las matematicas  :xD :xD :xD


En línea

Freeze.


Desconectado Desconectado

Mensajes: 2.731



Ver Perfil WWW
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #2 en: 30 Octubre 2008, 22:22 »

No puedo compilarlo con code::blocks :P
En línea

VirucKingX


Desconectado Desconectado

Mensajes: 540


VirucKingX


Ver Perfil
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #3 en: 30 Octubre 2008, 22:47 »

dame tiempo para analizarlo y te comento



Chau
En línea



Bye
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.872


Toys in the attic.


Ver Perfil
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #4 en: 31 Octubre 2008, 02:23 »

No puedo compilarlo con code::blocks :P

code::blocks???
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.872


Toys in the attic.


Ver Perfil
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #5 en: 31 Octubre 2008, 23:53 »

dame tiempo para analizarlo y te comento



Chau

Necesitas ayuda para analizarlo??? te puedo explicar como va el algoritmo asi es mas facil...
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
VirucKingX


Desconectado Desconectado

Mensajes: 540


VirucKingX


Ver Perfil
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #6 en: 1 Noviembre 2008, 00:02 »

dame tiempo para analizarlo y te comento



Chau

Necesitas ayuda para analizarlo??? te puedo explicar como va el algoritmo asi es mas facil...

Te lo agradeceria  :-(


Chau
En línea



Bye
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.872


Toys in the attic.


Ver Perfil
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #7 en: 1 Noviembre 2008, 00:17 »

Te mande un PM, agregame...
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Agente Naranja


Desconectado Desconectado

Mensajes: 498


uguu~


Ver Perfil WWW
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #8 en: 1 Noviembre 2008, 23:02 »

Hum...¿crees que sería posible postear el código con algunos comentarios? Para así hacer un poco más fácil su lectura.

Por cierto en Code::Blocks y en devCpp me tira un error al compilar la linea

unsigned long double x;

Creo que es porque en C++ no existen unsigned doubles, no se por qué, pero así lo leí en Internet.

Saludos.
En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.872


Toys in the attic.


Ver Perfil
Re: Pseudo Random Encription Algorithm 1.0 RC1 by APOKLIPTICO.
« Respuesta #9 en: 2 Noviembre 2008, 01:07 »

Alguien me explica que es code::blocks?? a mi me compila perfecto en VC++ 6.0...
Ok, en cuanto tenga un rato explico como funciona la clase PRG y como funciona el cifrado tmb...
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[RETO] Matriz Bidimensional {FrogMatrix algorithm} « 1 2 »
Programación Visual Basic
Psyke1 13 3,938 Último mensaje 30 Noviembre 2010, 19:33
por 79137913
New Thomson/Technicolor WPA Algorithm Reversed « 1 2 »
Hacking Wireless
kevind 16 35,344 Último mensaje 31 Marzo 2014, 12:05
por hiromiaika
Desarrollar Criptografia IDEA en java (International Data Encryption Algorithm)
Java
usernovato 0 483 Último mensaje 5 Septiembre 2015, 01:17
por usernovato
Ayuda encryption archivo .dat con QuickBMS
Ingeniería Inversa
aqpvip 3 1,154 Último mensaje 13 Julio 2017, 16:36
por MCKSys Argentina
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines