jueves, 1 de octubre de 2015

Encriptar un texto en lenguaje JAVA y desencriptarlo en PHP (Codificación AES) - < PHP 7.1.0

ACLARACIÓN: Esta función solo puede ser utilizada hasta PHP 7.1.0, ya que ha sido declarada como obsoleta para posteriores versiones.

Código para encriptar un texto en lenguaje JAVA y desencriptarlo en PHP. Codificación AES.
El parámetro "key" es la llave para encriptar/desencriptar y debe ser la misma en ambos lados del código

Método de encriptación JAVA
public static String encrypt(String input, String key){
   byte[] crypted = null;
   try{
     SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
       cipher.init(Cipher.ENCRYPT_MODE, skey);
       crypted = cipher.doFinal(input.getBytes());
     }catch(Exception e){
      System.out.println(e.toString());
     }
     return new String(Base64.encodeBase64(crypted));
 }
 

Método de desencriptación PHP
public static function decrypt($sStr, $sKey) {
  $decrypted= mcrypt_decrypt(
   MCRYPT_RIJNDAEL_128,
   $sKey, 
   base64_decode($sStr), 
   MCRYPT_MODE_ECB
  );
  $dec_s = strlen($decrypted); 
  $padding = ord($decrypted[$dec_s-1]); 
  $decrypted = substr($decrypted, 0, -$padding);
  return $decrypted;
 }

Código original de stevenholder. Más información y código completo en (Github)stevenholder/PHP-Java-AES-Encrypt

lunes, 21 de septiembre de 2015

Utilización de listas (List) y cálculo de promedios con foreach


Lenguaje: C#
Desarrollado para: Aplicación de Consola C#

Utilización de listas (List) y cálculo de promedios con foreach
  • Utilización de lista con tipos de datos primitivos y entidades de negocios.
  • Cálculo de promedio de edades por cada sexo.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AplicacionColecciones2
{
    public class Inicio
    {
        static void Main(string[] args)
        {
            //lista de tipo string - cadena de caracteres
            List listaString = new List();

            //add - agregar elementos del tipo indicado en la lista
            listaString.Add("Ejemplo");
            listaString.Add("Ejemplo 2");
            listaString.Add("Ejemplo 3");
            listaString.Add("Ejemplo 4");

            //Se recorre la lista con un for común
            for (int i = 0; i < 10; i++)
            {
                listaString.Add("Ejemplo " + i.ToString());
            }


            //lista de elementos de tipo int
            List listaNumeros = new List();

            //Se agregan 10 elementos en la lista
            for (int i = 0; i < 10; i++)
   {
       listaNumeros.Add(i);
   }

            //sumatoria de los valores de la lista de número 
            //se utiliza el 'foreach' para recorrer una colección sin conciderar el fin de una lista
            int suma = 0;
            foreach (int item in listaNumeros)
         {
                suma = suma + item;
         }

            //Lista de elementos tipo Alumno - entidad de negocios
            List listaAlumnos = new List();

            //Se llena el listado con alumnos creados en un for
            Alumno alumno = new Alumno();
            for (int i = 0; i < 5; i++)
            {
                alumno = new Alumno();
                alumno.NumeroMatricula = i;
                alumno.Nombres = "Pascual" + 1.ToString();
                alumno.Apellidos = "Arroyo";
                alumno.FechaRegistro = DateTime.Today;
                alumno.Edad = 10 + i;
                alumno.Sexo = (((i + 1) % 2) == 0) ? "F" : "M";

                listaAlumnos.Add(alumno);
            }

            Console.WriteLine("Promedio de edades por sexo");

            //Se recorre el listado con un foreach para calcular el promedio de edades por sexo
            double promedioF = 0.0;
            double promedioM = 0.0;
            int countF = 0;
            int countM = 0;

            foreach (Alumno al in listaAlumnos)
            {
                Console.WriteLine("Alumno "+al.Sexo+" - edad: "+al.Edad.ToString());

                if (al.Sexo.Equals("F")) {
                    ++countF;
                    promedioF += al.Edad;
                }
                else if (al.Sexo.Equals("M")) {
                    ++countM;
                    promedioM += al.Edad;
                }
            }


            Console.WriteLine("Promedio de edades por sexo");
            Console.WriteLine("");
            Console.WriteLine("Mujeres - Cantidad: "+countF.ToString() +" - Promedio: "+(promedioF/countF));
            Console.WriteLine("Hombres - Cantidad: " + countM.ToString() + " - Promedio: " + (promedioM / countM));
            Console.WriteLine("");
            Console.ReadKey();

        }
    }
}


Entidad de negocios - Alumno
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AplicacionColecciones2
{
    public class Alumno
    {
        public int NumeroMatricula { get; set; }
        public string Nombres { get; set; }
        public string Apellidos { get; set; }
        public DateTime FechaRegistro { get; set; }
        public string Sexo { get; set; }
        public int Edad { get; set; }
    }
}

lunes, 7 de septiembre de 2015

Ingreso y cálculo de promedios de sueldo para hombre y mujer


Lenguaje: C#
Desarrollado para: Aplicación de Consola C#

Desarrolle un programa en el cual:
  • Ingrese el sueldo de una persona validando que sea mayor o igual a $100.000.-
  • Indique cuantos sueldos han sido ingresados.
  • Indique cuantos sueldos han sido ingresados por cada sexo (H: Hombre; M: Mujer).
  • Promedio de sueldos separados por sexo.
  • Indique cual es el sueldo mayor por cada sexo.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SistemaSueldos
{
    class Inicio
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Sistema de sueldos");
            Console.WriteLine("");

            bool sigue = false;
            int vuelta = 0;

            //Variables de conteo 
            int cantidadSueldos = 0;
            int cantidadSueldosHombres = 0;
            int cantidadSueldosMujeres = 0;

            //Variables de promedios
            double promedioSueldosHombres = 0.0;
            double promedioSueldosMujeres = 0.0;

            //Variables de sueldo mayor 
            double sueldoMayorHombre = 0;
            double sueldoMayorMujer = 0;

            do{
                sigue = false;
                Console.WriteLine("Ingresar sueldo: ");

                double sueldo = double.Parse(Console.ReadLine());
                //Validación de sueldo mayor a 100000
                if (sueldo < 100000)
                {
                    Console.WriteLine("ERROR: El sueldo debe ser mayor a $100000, vuelva a intentar");
                    sigue = true;
                }
                else
                {
                    ++cantidadSueldos;
                    Console.WriteLine("Ingrese el sexo de la persona a la que pertenece el sueldo");
                    Console.WriteLine("[H]ombre - [M]ujer:");
                    string sexo = Console.ReadLine();

                    if (sexo.Trim().ToUpper().Equals("H")) {

                        if (vuelta == 0) sueldoMayorHombre = sueldo;
                        else{ 
                            if (sueldoMayorHombre < sueldo) sueldoMayorHombre = sueldo;
                        }

                        ++cantidadSueldosHombres;
                        promedioSueldosHombres = promedioSueldosHombres + sueldo;
                    }
                    else if (sexo.Trim().ToUpper().Equals("M")) {

                        if (vuelta == 0) sueldoMayorMujer = sueldo;
                        else{
                            if (sueldoMayorMujer < sueldo) sueldoMayorMujer = sueldo;
                        }

                        ++cantidadSueldosMujeres;
                        promedioSueldosMujeres = promedioSueldosMujeres + sueldo;
                    }

                    
                    Console.WriteLine("Desea seguir? [y/n]");
                    string res = Console.ReadLine();

                    if (res.Trim().ToUpper().Equals("Y")) sigue = true;

                }
                ++vuelta;
            } while (sigue);

            Console.WriteLine("");
            Console.WriteLine("Resultados");
            Console.WriteLine("");
            Console.WriteLine("Cantidad de sueldos ingresados: "+cantidadSueldos);
            Console.WriteLine("Cantidad sueldos de mujeres: "+cantidadSueldosMujeres);
            Console.WriteLine("Cantidad sueldos de hombres: " + cantidadSueldosHombres);
            Console.WriteLine("Promedio sueldos de mujeres: $" + (promedioSueldosMujeres/cantidadSueldosMujeres));
            Console.WriteLine("Promedio sueldos de hombres: $" + (promedioSueldosHombres / cantidadSueldosHombres));
            Console.WriteLine("Mayor sueldo de mujeres: $" + sueldoMayorMujer);
            Console.WriteLine("Mayor sueldo de hombres: $" + sueldoMayorHombre);
            Console.ReadKey();
        }
    }
}

viernes, 4 de septiembre de 2015

Promedio de 20 notas ingresadas por usuario + nota mayor y menor


Lenguaje: C#
Desarrollado para: Aplicación de Consola C#

Realice un programa donde el usuario ingrese las notas de 20 alumnos y despliegue los siguientes resultados:

  • Promedio General de Notas
  • Número de alumnos aprobados y reprobados por separado.
  • Nota Mayor y nota Menor.
  • Promedio de notas de alumnos aprobados y promedio de alumnos reprobados.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NotasAlumnos
{
    class Inicio
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Sistema de promedios");
            Console.WriteLine("");
            Console.WriteLine("Ingrese la nota de 20 alumnos para realizar las operaciones necesarias:");

            double promedioGeneral = 0;
            double promedioAprobados = 0;
            double promedioReprobados = 0;

            int cantidadAlumnosAprobados = 0;
            int cantidadAlumnosReprobados = 0;

            double notaMayor = 0;
            double notaMenor = 0;
            
            for (int i = 0; i < 20; ++i) {

                string valorNota = Console.ReadLine();
                string separadorDecimal = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
                double nota = double.Parse(valorNota.Replace(",", separadorDecimal).Replace(".", separadorDecimal));

                if (i == 0){
                    notaMayor = nota;
                    notaMenor = nota;
                }
                else {
                    if (notaMenor > nota) notaMenor = nota;
                    if (notaMayor < nota) notaMayor = nota;
                }

                if (nota < 4.0){
                    ++cantidadAlumnosReprobados;
                    promedioReprobados = promedioReprobados + nota;
                }
                else{ 
                    ++cantidadAlumnosAprobados;
                    promedioAprobados = promedioAprobados + nota;
                }

                promedioGeneral = promedioGeneral + nota;
            }


            Console.WriteLine("");
            Console.WriteLine("Resultado:");
            Console.WriteLine("");
            Console.WriteLine("Promedio general de notas: " + (promedioGeneral/20));
            Console.WriteLine("Cantidad de alumnos aprobados: "+cantidadAlumnosAprobados);
            Console.WriteLine("Cantidad de alumnos reprobados: "+cantidadAlumnosReprobados);
            Console.WriteLine("Nota mayor: "+notaMayor.ToString());
            Console.WriteLine("Nota menor: "+notaMenor.ToString());
            Console.WriteLine("Promedio notas alumnos aprobados: "+(promedioAprobados/cantidadAlumnosAprobados));
            Console.WriteLine("Promedio notas alumnos reprobados: "+(promedioReprobados/cantidadAlumnosReprobados));
            Console.ReadKey();
        }
    }
}

Calcular cuadrado de un número ingresado solo sumando

Lenguaje: C#
Desarrollado para: Aplicación de Consola C#

Calcule X2 donde X es un número entero y debe ingresarlo el usuario. El cálculo debe realizarlo utilizando solamente sumas.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CalculoNumeroCuadrado
{
    class Inicial
    {
        static void Main(string[] args)
        {
            string operatoria = "";
            Int32 sumatoria = 0;

            Console.WriteLine("Ingrese un número:");
            Int32 numeroX = Int32.Parse(Console.ReadLine());

            for (int i = 0; i < numeroX; ++i) {
                sumatoria = sumatoria + numeroX;
                
                if(i == 0) operatoria = numeroX.ToString();
                else operatoria = operatoria +"+"+ numeroX.ToString();

            }

            Console.WriteLine("############ Resultado ############");
            Console.WriteLine("Cuadrado de " + numeroX);
            Console.WriteLine(operatoria + "=" + sumatoria.ToString());
            Console.ReadKey();

        }
    }
}

miércoles, 2 de septiembre de 2015

Identificar número mayor y menor ingresado


Lenguaje: C#
Desarrollado para: Aplicación de Consola C#

Desarrollar una aplicación de consola que permita identificar de un conjunto de números a ingresar por teclado cuál es el mayor y cuál es el menor de ellos. Además, debe calcular el promedio general entre todos los números que son ingresados y que se encuentren entre 6 y 10.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IdentificarConjuntoNumeros
{
    class ProgramaInicial
    {
        static void Main(string[] args)
        {

            Console.WriteLine("1 - Identificar número mayor y menor");
            Console.WriteLine("Ingrese la cantidad de números a verificar:");

            //AGREGAR VALIDACIÓN PARA CUANDO NO INGRESAN NÚMEROS
            Int32 cant = Int32.Parse(Console.ReadLine());
            Int32 cantPromedio = 0;
            Int32 mayor = 0;
            Int32 menor = 0;
            double sumatoria = 0.0;
            
            for (int i = 0; i < cant; ++i) {

                Console.WriteLine("Ingrese el nro. ["+ (i+1) +" de "+ cant+"]");
                Int32 ingresado = Int32.Parse(Console.ReadLine());

                if (i == 0){
                    mayor = ingresado;
                    menor = ingresado;
                }
                else
                {
                    if (mayor < ingresado) mayor = ingresado;
                    if (menor > ingresado) menor = ingresado;
                }

                if ((ingresado >= 6) && (ingresado <= 10))
                {
                    sumatoria = sumatoria + ingresado;
                    ++cantPromedio;
                }
            }

            sumatoria = sumatoria / cantPromedio;

            Console.WriteLine("### Resultados ###");
            Console.WriteLine("Número menor : "+menor.ToString());
            Console.WriteLine("Número mayor : " + mayor.ToString());
            Console.WriteLine("Promedio : " + sumatoria.ToString());

            Console.ReadKey();
        }
    }
}

Aclaraciones

Blog que se crea para poder aportar con código desarrollado de manera simple y comprensiva, que ayude en los inicios del desarrollo como programador.

Si se encuentra algún problema con los código, o algún comentario que pueda aportar, siempre será bienvenido