domingo, 4 de septiembre de 2011

Como generar un password

Hay distintos lenguajes que nos permiten dar instrucciones a un ordenador (un programa de ordenador es básicamente eso: un conjunto de órdenes para un ordenador). El lenguaje más directo es el propio del ordenador, llamado "lenguaje de máquina" o "código máquina", formado por secuencias de ceros y unos. Este lenguaje es muy poco intuitivo para nosotros, y difícil de usar. Por ello se recurre a otros lenguajes más avanzados, más cercanos al propio lenguaje humano (lenguajes de alto nivel), y es entonces el mismo ordenador el que se encarga de convertirlo a algo que pueda manejar directamente.

Se puede distinguir dos tipos de lenguajes, según se realice esta conversión:

  1. En los intérpretes, cada instrucción que contiene el programa se va convirtiendo a código máquina antes de ejecutarla, lo que hace que sean más lentos (a cambio, los intérpretes suelen ser más fáciles de crear, lo que permite que sean baratos y que puedan funcionar en ordenadores con menor potencia).
  2. En los compiladores, se convierte todo el programa en bloque a código máquina y después se ejecuta. Así, hay que esperar más que en un intérprete para comenzar a ver trabajar el programa, pero después éste funciona mucho más rápido (a cambio, los compiladores son más caros y suelen requerir ordenadores más potentes).  
Hay lenguajes para los que sólo hay disponibles intérpretes, otros para los que sólo existen compiladores, y otros en los que se puede elegir entre ambos. La mayoría de los lenguajes actuales son compilados, y el entorno de desarrollo suele incluir:
  • Un editor para escribir o revisar los programas.
  • El compilador propiamente dicho, que los convierte a código máquina.
  • Otros módulos auxiliares, como enlazadores (linkers) para unir distintos subprogramas, y depuradores (debuggers) para ayudar a descubrir errores. 
BASIC, que durante mucho tiempo se ha considerado un buen lenguaje para comenzar a aprender, por su sencillez, aunque se podía tender a crear programas poco legibles. A pesar de esta "sencillez" hay versiones muy potentes, incluso para programar en entornos gráficos como Windows. 

C, uno de los mejor considerados actualmente (junto con C++ y Java, que mencionaremos a continuación), porque no es demasiado difícil de aprender y permite un grado de control del ordenador muy alto, combinando características de lenguajes de alto y bajo nivel. Además, es muy transportable: existe un estándar, el ANSI C, lo que asegura que se pueden convertir programas en C de un ordenador a otro o de un sistema operativo a otro con bastante menos esfuerzo que en otros lenguajes.

C++, un lenguaje desarrollado a partir de C, que permite Programación Orientada a Objetos, por lo que resulta más adecuado para proyectos de una cierta envergadura. 

 Java, desarrollado a su vez a partir de C++, que elimina algunos de sus inconvenientes, y ha alcanzado una gran difusión gracias a su empleo en Internet.

PASCAL, el lenguaje estructurado por excelencia (ya se irá viendo qué es esto más adelante), y que en algunas versiones tiene una potencia comparable a la del lenguaje C, como es el caso de Turbo Pascal en programación para DOS y de Delphi en la programación para Windows. Frente al C tiene el inconveniente de que es menos portable, y la ventaja de que en el caso concreto de la programación para DOS, Turbo Pascal no tiene nada que envidiar la mayoría de versiones del lenguaje C en cuanto a potencia, y además resulta más fácil de aprender, es muy rápido, crea ficheros EXE más pequeños, etc., mientras que en la programación para Windows, Delphi es una muy buena herramienta para crear aplicaciones de calidad en un tiempo razonablemente breve. 


BASIC: Generar password.


Private Sub Command1_Click()
Beep
End
End Sub

Private Sub Command2_Click()
Beep
End
End Sub


Private Sub Label4_Click()
Beep
End
End Sub


Private Sub Form_Load()
Data1.Visible = False
Data1.DatabaseName = App.Path + "\pas1.mdb"
End Sub


Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text2.SetFocus
SendKeys "{home}+{end}"
Text1.Text = LCase(Text1.Text)
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Data1.RecordSource = ("select * from pass where password='" & Text2.Text & "' and user = '" & Text1.Text & "'")
Data1.Refresh
If Text3.Text = "" Or Text4.Text = "" Then
MsgBox "Aceso Denegado", vbCritical, "Password"
Text1.SetFocus
SendKeys "{home}+{end}"
Else
MsgBox "Aceso Aprobado", vbInformation, "Password"
Unload password
Load main
main.Show
'Load frmTip
'frmTip.Show 1
End If
End If
End Sub

Pascal:  Generar password.


 var
  Ch : Char; Ch: Char;
  Pass : String; Pass: String;
  count : integer; contar con: integer;
begin comenzar
  Pass := ''; Pass: ='';
  count := 0; contar: = 0;

  repeat repetir
    Ch := ReadKey; Ch: = ReadKey;
    if (Ch = #8) then if (Ch = # 8) entonces
    begin comenzar
         write(ch); escribir (ch);
         if (count <= 0) then begin Pass := Pass; end else if (cuenta <= 0) then begin Pass: Pase =; end else
         if (count > 0) then begin Pass := Pass + Ch; end; if (count> 0) then begin Pass: Pase = + Ch; fin;
         dec(count); diciembre (cuenta);
    end else end else
    if (Ch in [#32..#126]) then if (Ch en [# 32 .. # 126]), entonces
    begin comenzar
         Write('*'); Escribir ('*');
         Pass := Pass + Ch; Pass: Pase = + Ch;
         inc(count); inc (cuenta);
    end; final;
  until (Ch = #13); hasta que (Ch = # 13);

  WriteLn; WriteLn;
  WriteLn('You Entered: ' + Pass); WriteLn ('que introdujo: "Pase +);
end. finales. 
 
C++: Generar password.
Random_Password()

{



int ran_int_num;



time_t seconds;

time(&seconds);



srand ((unsigned int) seconds);



/* multiply by 975 to generate a larger number */

ran_int_num = rand() * 975;
sprintf(randompw, "%u", ran_int_num);

strncpy(newpw, randompw, 8);





return(0);



}







Here's what I tried to change it to, in order to generate an alphanumeric:





GenerateRandomID()



{

char password_chars["1234567890abcdefghijklmnopqrstuvwxyz"];

int i;

int length;

char ticketid;

int random;



       for (i = 0; i < length; i++) {

               random = rand(0, strlen(password_chars) - 1);

               ticketid = password_chars[random];

       }

       return ticketid;

}

Partes de la PC y entradas.


Algoritmo (casa-escuela)

1.- Salgo de casa caminar 3 cuadras a la derecha dar vuelta a la derecha y caminar una cuadra, dar vuelta a la izquierda y caminar 2 cuadras hasta la parada de autobus.

2.-Tomar autobus a sanlazaro.

3.-Tomar el metro y avanzar 3 estaciondes de San Lazaro  a  Puerto Aereo.

4.-Salir del metro  y tomar en microbus a UPIICSA.

1.-15 min.
2.-60 min.
3.-10 min.
4.-20 min.

a: Caminar. 15min
b: Autobus. 60 min.
c:Metro.      10min.
d: Microbus.20 min.

a+b+c+d=e
15+60+10+20= 105min

Tipos de lenguajes

Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel.

Lenguajes de bajo nivel

Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas.
Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características del mismo.
Dentro de este grupo se encuentran:

  • El lenguaje maquina: este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Cnsiste en la combinación de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina.
    Este lenguaje es mucho más rápido que los lenguajes de alto nivel.
    La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible.
  • El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, ñadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.

Lenguajes de alto nivel

Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina.
Están dirigidos a solucionar problemas mediante el uso de EDD's.

Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema.

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el código fuente como las características de la maquina.

Suelen usar tipos de datos para la programación y hay lenguajes de propósito general (cualquier tipo de aplicación) y de propósito especifico (como FORTRAN para trabajos científicos).

Lenguajes de Medio nivel

Se trata de un termino no aceptado por todos, pero q seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.

    Tipos de conexiones





    Tipos de conexión de red

    Puede utilizar Conexiones de red para crear varios tipos de conexiones entre equipos. En la tabla siguiente se muestra cada tipo de conexión que puede crear, los métodos de comunicación que puede utilizar para crear dichos tipos y un ejemplo de cada uno de ellos. Para obtener más información, haga clic en el tipo de conexión apropiado en la tabla.


    Las redes PAN (red de administración personal) son redes pequeñas, las cuales están conformadas por no más de 8 equipos, por ejemplo: café Internet.
     CAN: Campus Area Network, Red de Area Campus. Una CAN es una colección de LANs dispersadas geográficamente dentro de un campus (universitario, oficinas de gobierno, maquilas o industrias) pertenecientes a una misma entidad en una área delimitada en kilometros. Una CAN utiliza comúnmente tecnologías tales como FDDI y Gigabit Ethernet para conectividad a través de medios de comunicación tales como fibra óptica y espectro disperso.
     Las redes LAN (Local Area Network, redes de área local) son las redes que todos conocemos, es decir, aquellas que se utilizan en nuestra empresa. Son redes pequeñas, entendiendo como pequeñas las redes de una oficina, de un edificio. Debido a sus limitadas dimensiones, son redes muy rápidas en las cuales cada estación se puede comunicar con el resto. Están restringidas en tamaño, lo cual significa que el tiempo de transmisión, en el peor de los casos, se conoce. Además, simplifica la administración de la red.Suelen emplear tecnología de difusión mediante un cable sencillo (coaxial o UTP) al que están conectadas todas las máquinas. Operan a velocidades entre 10 y 100 Mbps.


    Las redes WAN (Wide Area Network, redes de área extensa) son redes punto a punto que interconectan países y continentes. Al tener que recorrer una gran distancia sus velocidades son menores que en las LAN aunque son capaces de transportar una mayor cantidad de datos. El alcance es una gran área geográfica, como por ejemplo: una ciudad o un continente. Está formada por una vasta cantidad de computadoras interconectadas (llamadas hosts), por medio de subredes de comunicación o subredes pequeñas, con el fin de ejecutar aplicaciones, programas, etc.
     Una red de área extensa WAN es un sistema de interconexión de equipos informáticos geográficamente dispersos, incluso en continentes distintos. Las líneas utilizadas para realizar esta interconexión suelen ser parte de las redes públicas de transmisión de datos.




    Simbolos del diagrama de flujo


    Procesadores

    886: Los Intel 8086 e Intel 8088 (i8086, llamado oficialmente iAPX 86, e i8088) son dos microprocesadores de 16 bits diseñados por Intel en 1978, iniciadores de la arquitectura x86. 
     

    286: El Intel 80286 (llamado oficialmente iAPX 286, también conocido como i286 o 286) es un microprocesador de 16 bits de la familia x86, que fue lanzado al mercado por Intel el 1 de febrero de 1982. Las versiones iniciales del i286 funcionaban a 6 y 8 MHz, pero acabó alcanzando una velocidad de hasta 25 MHz. 


    386:  El Intel 80386 (i386, 386) es un microprocesador CISC con arquitectura x86. Durante su diseño se le llamó 'P3', debido a que era el prototipo de la tercera generación x86. El i386 fue empleado como la unidad central de proceso de muchos ordenadores personales desde mediados de los años 80 hasta principios de los 90. Tenía una velocidad de hasta 40 MHz.


    486: Los Intel 80486 (i486, 486) son una familia de microprocesadores de 32 bits con arquitectura x86 diseñados por Intel. La velocidades de reloj típicas para los i486 eran 16 MHz (no muy frecuente), 20 MHz (tampoco frecuente), 25 MHz, 33 MHz, 40 MHz, 50 MHz (típicamente con duplicación del reloj), 66 MHz (con duplicación del reloj), 75 MHz (con triplicación del reloj), 100 MHz (también con triplicación del reloj) y 120 MHz (con cuatriplicación de reloj en una variante de AMD, el Am486-DX5). 




    Pentium: Los Intel Pentium son una gama de microprocesadores con arquitectura x86 producidos por la compañía Intel. El microprocesador Pentium se lanzó al mercado el 22 de marzo de 1993, sucediendo al procesador Intel 80486. Intel no lo llamó 586 debido a que no es posible registrar una marca compuesta solamente de números y a que la competencia utilizaba hasta ahora los mismos números que Intel para sus procesadores equivalentes (AMD 486, IBM 486...). También es conocido por su nombre clave P54C. . El K5 es internamente un Procesador RISC con una Unidad x86- decodificada que desmantela todos los comandos x86 de la aplicación en comandos RISC. Este principio se usa hasta hoy en todos los CPUs x86.




    Pentium Pro: Es la sexta generación de arquitectura x86 de los microprocesadores de Intel, cuya meta era remplazar al Intel Pentium en toda la gama de aplicaciones, pero luego se centró como chip en el mundo de los servidores y equipos de sobremesa de gama alta. A pesar del nombre, el Pentium Pro es realmente diferente de su procesador antecesor, el Intel Pentium, ya que estaba basado en el entonces nuevo núcleo P6 (que se vería modificado para luego ser usado en el Intel Pentium II, Intel Pentium III e Intel Pentium M).




    Pentium II: Es un microprocesador con arquitectura x86 diseñado por Intel, introducido en el mercado el 7 de mayo de 1997. Está basado en una versión modificada del núcleo P6, usado por primera vez en el Intel Pentium Pro. Los cambios fundamentales respecto a éste último fueron mejorar el rendimiento en la ejecución de código de 16 bits, añadir el conjunto de instrucciones MMX y eliminar la memoria caché de segundo nivel del núcleo del procesador, colocándola en una tarjeta de circuito impreso junto a éste. 



    Pentium III: Es un microprocesador de arquitectura i686 fabricado por Intel; el cual es una modificación del Pentium Pro. Fue lanzado el 26 de febrero de 1999. Las primeras versiones eran muy similares al Pentium II, siendo la diferencia más importante la introducción de las instrucciones SSE. Al igual que con el Pentium II, existía una versión Celeron de bajo presupuesto y una versión Xeon para quienes necesitaban de gran poder de cómputo.


    El Pentium 4 (erróneamente escrito Pentium IV) es un microprocesador de séptima generación basado en la arquitectura x86 y fabricado por Intel. Es el primer microprocesador con un diseño completamente nuevo desde el Pentium Pro de 1995. El Pentium 4 original, denominado Willamette, trabajaba a 1,4 y 1,5 GHz; y fue lanzado en noviembre de 2000. La estrategia de Intel fue sacrificar el rendimiento de cada ciclo para obtener a cambio mayor cantidad de ciclos por segundo y una mejora en las instrucciones SSE. Al igual que los demás procesadores de Intel, el Pentium 4 se comercializa en una versión para equipos de bajo presupuesto (Celeron), y una orientada a servidores de gama alta (Xeon). 








    Introducido en marzo de 2003, el Intel Pentium M es un microprocesador con arquitectura x86 (i686) diseñado y fabricado por Intel.  El Pentium M representa un cambio radical para Intel, ya que no es una versión de bajo consumo del Pentium 4, sino una versión fuertemente modificada del diseño del Pentium III. Está optimizado para un consumo de potencia eficiente, una característica vital para ampliar la duración de la batería de las computadoras portátiles. 



    Intel Core Duo: Microprocesador con dos núcleos de ejecución, lanzado en enero del 2006. El microprocesador Intel® Core Duo está optimizado para las aplicaciones de subprocesos múltiples y para la multitarea. Puede ejecutar varias aplicaciones exigentes simultáneamente, como juegos con gráficos potentes o programas que requieran muchos cálculos, al mismo tiempo que puede descargar música o analizar su PC con su antivirus en segundo plano. Este microprocesador implementa 2Mb de caché compartida para ambos núcleos más un bus frontal de 667Mhz; además implementa un nuevo juego de instrucciones para multimedia (SSE3) y mejoras para las SSE y SSE2. Sin embargo, el desempeño con enteros es ligeramente inferior debido a su caché con mayor latencia. También incluye soporte para la tecnología Bit NX. Intel® Core Duo es el primer microprocesador de Intel usado en las computadoras Apple Macintosh.