Mostrar los tags: IP

Mostrando del 1 al 10 de 338 coincidencias
<<>>
Se ha buscado por el tag: IP
Imágen de perfil

Contador Dinámico con JS solamente


JavaScript

Publicado el 20 de Diciembre del 2024 por Alejandro
485 visualizaciones desde el 20 de Diciembre del 2024
Este código sirve para crear una cuenta regresiva que muestra el tiempo restante hasta una fecha y hora específicas, como el lanzamiento de un producto, un evento o una página web. Se actualiza en tiempo real y muestra los días, horas, minutos y segundos restantes de forma dinámica.

Es ideal para incluir en páginas web o proyectos donde quieras mantener a tus usuarios informados sobre el tiempo restante para un hito importante. Cuando el temporizador llega a cero, se puede mostrar un mensaje personalizado, como "¡Ya estamos en directo!" o cualquier texto que elijas. Ni necesitas más pildoras de Javascript, soy Alejandro Tamargo Desarrollador Web en Asturias
Imágen de perfil

Elíptica_Criptografía


Python

Publicado el 27 de Noviembre del 2024 por Hilario (144 códigos)
544 visualizaciones desde el 27 de Noviembre del 2024
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Figure_1

---------------------------------------------------------------------------------------------------------------------------

Captura-de-pantalla-de-2024-11-27-12-07-57

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Aula_28_Nov_Eliptica_Criptografia.py
+++++++++++++++++++++++++++++




Dentro de todas las partes, digamos, técnologicas, que hemos ido estudiando y procesando. Comenzamos un tema nuevo,
para el que seguiremos utilizando el lengua Python, y un sistema operativo basado en linux.
Nos adentramos en el mundo de la criptografía y de las claves, en principio, en los sistemas más utilizados
por el secure shel SSH, en principio con un ejemplo sencillo, que intentaré explicar lo mejor posible.
Como siempre, en nuestras sucesivas clases de técnología iremos aclarando las dudas que surjan, lo que supondrá, como siempre
ocurre en nuestras clases, profundizar mucho más sobre el tema. Os pido, que dentro de lo posible, intenteis razonar el código.
Luego ya aclararemos todo lo que surja, pero es más fácil su comprensión si llevamos, digamos, trillado, un poco de lo que se trata.

EMPECEMOS:
++++++++++++++

-¿Qué es una curva elíptica?
Una curva elíptica es una curva matemática que tiene la forma general:
y2=x3+ax+b (Ya sabeis, y elevado a 2, igual a x elevado a 3, más a por x, más b)
Esta curva tiene propiedades interesantes que se aprovechan en criptografía para generar claves. En criptografía de curvas elípticas (ECC, por sus siglas en inglés), usamos puntos sobre esta curva para construir un sistema de claves.


¿Cómo se construyen las claves con una curva elíptica?
1. Selección de la curva elíptica:
◦ Primero, se elige una curva elíptica específica. La ecuación y2=x3+ax+b tiene parámetros como a, b, y un número primo p que define el campo finito (es decir, trabajamos con números que están "limitados" por un número p).
◦ Un ejemplo común de curva elíptica es la curva secp256k1, que se usa en Bitcoin.

2. Punto generador (G):
◦ Sobre la curva elíptica, hay un punto generador G que es un punto específico de la curva, que se conoce de antemano. Este punto sirve para generar las claves.

3. Clave privada:
◦ La clave privada es un número aleatorio que se elige de manera segura. Es como una "semilla" que vamos a usar para generar la clave pública.
◦ Este número privado es secreto, y nunca se debe compartir.

4. Clave pública:
◦ La clave pública se genera multiplicando el punto generador G por el número privado (clave privada). Esto se hace mediante una operación llamada multiplicación escalar.
◦ Matemáticamente, si tienes una clave privada k, la clave pública P es: P=k⋅G
◦ Aquí, P es un nuevo punto sobre la curva que depende de k y G. Es casi imposible calcular k solo a partir de P, lo que hace la curva elíptica segura para su uso en criptografía.

5. Uso en criptografía:
◦ En criptografía de clave pública, puedes usar la clave pública para verificar la autenticidad de un mensaje o para cifrar datos.
◦ Solo la persona que tiene la clave privada puede descifrar los datos o firmar mensajes, porque se necesita la clave privada para generar la firma o descifrar.

Ejemplo práctico en criptografía
Imagina que quieres enviar un mensaje seguro a alguien:
1. La otra persona te envía su clave pública.
2. Tú usas esa clave pública para cifrar el mensaje.
3. La otra persona usa su clave privada para descifrarlo.
Y cuando firmes un mensaje:
1. Usas tu clave privada para firmar el mensaje (de forma que solo tú puedas hacerlo).
2. Cualquier persona que tenga tu clave pública puede verificar que la firma es auténtica y que no ha sido modificada.

¿Por qué es segura?
La seguridad de este sistema se basa en que, aunque la multiplicación escalar de un número por un punto en la curva es fácil de hacer, el proceso inverso (saber la clave privada a partir de la clave pública) es extremadamente difícil. Este problema se llama el problema del logaritmo discreto, y es la base de la seguridad de las curvas elípticas.

En fin, alumnos, resumiendo:
1. Clave privada: Número secreto que eliges.
2. Clave pública: Punto en la curva generado a partir de la clave privada.
3. Suma de puntos: Usada para multiplicar el punto generador G para obtener la clave pública.
4. Seguridad: Es muy difícil calcular la clave privada a partir de la clave pública.


Este enfoque se usa en criptografía moderna para asegurar comunicaciones y transacciones, como en Bitcoin o en protocolos TLS/SSL para la navegación segura por Internet.
----------------------------------------------------------------------------------------------------------------------------------

Bien, después de esta pequeña introducción, que ampliaremos en clase, la próxima semana y sucesivas, vamos con algo más práctico:

1. Representación gráfica de la curva elíptica.
---------------------------------------------------------------
El programa comienza generando una gráfica de la curva elíptica definida por y2=x3+8x+12 sobre los números reales:
• Cálculo de y2:
La ecuación se evalúa para valores de x en un rango definido [−10,10] para obtener los valores de y2.
• Raíces cuadradas positivas y negativas:
La raíz cuadrada de y2 se toma tanto positiva como negativa (y=±y2​) para trazar ambas ramas de la curva.
• Visualización:
Usa matplotlib para graficar las ramas positiva y negativa en colores distintos. También incluye líneas de referencia para los ejes x e y, junto con una cuadrícula para mejorar la legibilidad.
Propósito:
Este gráfico permite entender visualmente la forma de una curva elíptica sobre los números reales antes de trabajar con el caso modular (campo finito).

2. Implementación de una curva elíptica modular (campo finito pequeño)
-------------------------------------------------------------------------------------------------------
En esta sección, se define una clase EllipticCurve para manejar operaciones básicas en una curva elíptica sobre un campo finito

Fp​:
• Parámetros de la curva:
La curva está definida por y2=x3+ax+bmodp, donde:
◦ a=8, b=12, y p=97 (un número primo que define el campo).
• Validación de singularidades:
Verifica que la curva no sea singular usando la condición 4a3+27b2=0modp.

• Operaciones básicas:
◦ Pertenencia a la curva: Verifica si un punto (x,y) está en la curva.
◦ Suma de puntos: Implementa la adición de puntos, considerando casos como:
▪ P+O=P (punto identidad).
▪ Suma de puntos distintos.
▪ Duplicación de un punto (derivada de la tangente).
◦ Multiplicación escalar: Repite la suma k⋅P usando el algoritmo de duplicación y adición.

• Generación de claves:
◦ Se generan todos los puntos válidos en la curva para el campo F97​.
◦ Selecciona un punto generador G (el primero de la lista).
◦ La clave privada es un entero aleatorio entre 1 y p−1.
◦ La clave pública es el resultado de k⋅G, donde k es la clave privada.

Resultados:
Imprime:
• La ecuación de la curva modular.
• El punto generador G.
• Las claves privada y pública generadas.

3. Criptografía realista con secp256k1
Esta sección introduce una curva elíptica de uso práctico en criptografía, secp256k1, utilizada por Bitcoin:
• Definición:
La curva está definida por y2=x3+7modp, donde:
◦ p es un número primo grande (2256−232−977).
◦ G es un punto generador predeterminado en la curva.
◦ n es el orden del punto generador.
• Operaciones similares:
Implementa las mismas operaciones (pertenencia, suma de puntos, multiplicación escalar) adaptadas a los parámetros de secp256k1.
• Generación de claves:
◦ La clave privada es un número aleatorio de hasta 256 bits (1≤k<n).
◦ La clave pública es k⋅G, donde G y n aseguran un espacio de claves inmenso y seguridad criptográfica.
Resultados:
Muestra:
• La ecuación de secp256k1.
• El punto generador G.
• Las claves privada y pública.


Como véis, queridos alumnos, el propósito formativo del programa es:
++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++
1. Introducción visual a las curvas elípticas:
La gráfica inicial ayuda a entender cómo luce una curva elíptica y su simetría sobre los números reales.
2. Conceptos básicos de curvas elípticas en campos finitos:
◦ Explica cómo las curvas se definen y operan en un espacio modular, con un ejemplo simple (p=97).
◦ Introduce operaciones críticas como suma de puntos y multiplicación escalar.
3. Aplicación práctica en criptografía:
◦ Usa una curva criptográfica estándar (secp256k1) para mostrar cómo generar claves privadas y públicas.
◦ Destaca las diferencias entre un ejemplo educativo y un caso práctico con parámetros reales.

Bien, y como posibles mejoras, vamos a implementar lo siguiente:
---------------------------------------------------------------
• Implementar firmas digitales (ECDSA) como extensión práctica.
• Mostrar cómo la clave pública se convierte en un formato útil (como direcciones en Bitcoin).
• Incluir explicaciones más detalladas sobre seguridad y resistencia frente a ataques.


Comoos lo expuesto, tengo por sentado que os resultará un tanto farragoso, deseo que, como ya dije, comencéis su estudio-
Iremos puliendo dudas, y asentando conceptos los próximos días.



///////////////////////////////////////////////////////////////////////////
Como casi todos los ejercicios, este fue realizado, bajo una plataforma Linux,
en concreto con Ubuntu 20.04.6 LTS.
Fue editado con Sublime Text.
Se utilizó, Python3.
Y como smpre indico, se deberán de tener cargadas en el sistema, todas las librerias
que el código pide importar para su ejecucucíon.

Comando de ejecucuón bajo consola linux:

python3 Aula_28_Nov_Eliptica_Criptografia.py
Imágen de perfil

Aplicación para ocultar información de texto en imágenes o fotografías (nueva versión).


Python

estrellaestrellaestrellaestrellaestrella(1)
Actualizado el 25 de Mayo del 2024 por Antonio (77 códigos) (Publicado el 26 de Marzo del 2021)
14.119 visualizaciones desde el 26 de Marzo del 2021
Aplicación para codificar y decodificar mensajes de texto en imágenes.

La imagen se selecciona mediante el botón "SEARCH".
En el modo "Encode" el texto a ocultar se introduce en el espacio superior. (el programa generará un nuevo archivo de imagen cuyo nombre tendrá el prefijo "encoded_" delante del título del archivo original.
En el modo "Decode" el texto oculto se muestra en el espacio superior.

PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
stgp

Repositorio en GitHub:
https://github.com/antonioam82/Steganography
Imágen de perfil

Generador de valores hash para contraseñas.


Python

Actualizado el 5 de Mayo del 2024 por Antonio (77 códigos) (Publicado el 20 de Noviembre del 2022)
2.181 visualizaciones desde el 20 de Noviembre del 2022
El siguiente programa genera valores hash para una contraseña, utilizando distintos algoritmos. También permite la copia de las salidas generadas.
ph
Imágen de perfil

Generador de contraseñas.


Python

estrellaestrellaestrellaestrellaestrella(3)
Actualizado el 30 de Enero del 2024 por Antonio (77 códigos) (Publicado el 2 de Agosto del 2021)
10.149 visualizaciones desde el 2 de Agosto del 2021
Programa para generar contraseñas de forma aleatoria, de hasta 50 caracteres. Cuenta con un campo "LENGTH" para especificar la longitud de la contraseña, un campo "MIN LOWERCASE" para especificar el número mínimo de caracteres en minúsculas, un campo "MIN UPPERCASE" para el número mínimo de caracteres en mayúsculas y un campo "MIN NUMBERS" para especificar el número mínimo de caracteres numéricos.
PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
pg
Imágen de perfil

Convolución con SciPy


Python

Publicado el 18 de Diciembre del 2023 por Hilario (144 códigos)
779 visualizaciones desde el 18 de Diciembre del 2023
Proponemos el sencillo ejercicio: Aula_28_CNN-repaso.py, con el fin de realizar un proceso de convolución, sobre una imagen en color gris, por lo que sólo tendremos un canal de profundidad en la misma.

Según le hemos pedido al programa, la imagen tiene las siguientes características:
Características de la imagen:
Dimensiones: (431, 770, 1)
Valor mínimo: 0
Valor máximo: 249
Valor medio: 23.887129498498407.


La particularidad de este ejercicio, es que utilizamos el modulo scipy, creado inicialmente sobre el año 2000, actualizado en revisiones, y aún bastante utilizado.

Las caracteristicas más importantes de este módulo son las siguientes:
***************************************************************************************
SciPy es una biblioteca de código abierto en Python que se utiliza para realizar operaciones científicas y técnicas. Está construida sobre NumPy y proporciona funcionalidades adicionales para la manipulación de datos y el análisis estadístico. El módulo SciPy se divide en varios submódulos, cada uno de los cuales se centra en un área específica de la computación científica. Algunos de los submódulos más importantes son:

scipy.cluster: Algoritmos para clustering (agrupamiento) de datos.

scipy.constants: Constantes físicas y matemáticas.

scipy.fftpack: Transformada rápida de Fourier.

scipy.integrate: Rutinas de integración numérica.

scipy.interpolate: Interpolación de datos y construcción de splines.

scipy.io: Herramientas para la entrada y salida de datos.

scipy.linalg: Álgebra lineal.

scipy.ndimage: Procesamiento de imágenes n-dimensionales.

scipy.odr: Regresión ortogonal.

scipy.optimize: Optimización de funciones.

scipy.signal: Procesamiento de señales.
-------------------------------------------------------------

scipy.sparse: Estructuras de datos y algoritmos para matrices dispersas.

scipy.spatial: Estructuras y algoritmos espaciales.

scipy.special: Funciones matemáticas especiales.

scipy.stats: Estadísticas y distribuciones de probabilidad.


En nuestro caso que nos aplica, nos fijaremos en El módulo scipy.signal, que proporciona una función llamada convolve que se utiliza para realizar convoluciones entre dos secuencias. La convolución es una operación matemática que combina dos conjuntos de datos para producir un tercer conjunto de datos. En el contexto de procesamiento de señales, la convolución se utiliza, por ejemplo, para suavizar señales, encontrar la respuesta de un sistema a una entrada, o para aplicar filtros.

En la actualidad SciPy sigue siendo una biblioteca muy utilizada en la comunidad científica y de ingeniería en Python. Proporciona herramientas esenciales para tareas relacionadas con la computación científica, como álgebra lineal, optimización, procesamiento de señales, interpolación, integración numérica, estadísticas y más.

La biblioteca SciPy se mantiene y actualiza regularmente para incluir nuevas funcionalidades, mejoras de rendimiento y correcciones de errores. Es una parte integral del ecosistema científico de Python junto con NumPy, Matplotlib y otras bibliotecas relacionadas.


Figure_1
Figure_2
Imágen de perfil

Descenso gradiente lineal múltiple


Python

Publicado el 9 de Octubre del 2023 por Hilario (144 códigos)
609 visualizaciones desde el 9 de Octubre del 2023
El descenso de gradiente en el contexto de la regresión lineal múltiple se refiere a un algoritmo de optimización utilizado para encontrar los valores óptimos de los coeficientes de una función de regresión lineal que se ajuste mejor a un conjunto de datos con múltiples características (variables independientes). El objetivo es minimizar una función de costo, generalmente el error cuadrático medio (MSE, por sus siglas en inglés), que mide la diferencia entre las predicciones del modelo y los valores reales.

A continuación, se explica cómo funciona el descenso de gradiente en el contexto de la regresión lineal múltiple:

Inicialización: Se inician los coeficientes del modelo con valores aleatorios o ceros.

Cálculo de las predicciones: Se utilizan los coeficientes actuales para hacer predicciones sobre el conjunto de datos de entrenamiento. Esto implica multiplicar cada característica de entrada por su correspondiente coeficiente y sumar todos estos productos para obtener una predicción.

Cálculo del error: Se calcula la diferencia entre las predicciones y los valores reales (etiquetas) del conjunto de entrenamiento. Esto da como resultado un vector de errores.

Cálculo del gradiente: Se calcula el gradiente de la función de costo con respecto a los coeficientes. El gradiente indica la dirección y la magnitud en la que los coeficientes deben actualizarse para minimizar la función de costo. Para el MSE, el gradiente se calcula como la derivada de la función de costo con respecto a cada coeficiente.

Actualización de coeficientes: Se actualizan los coeficientes multiplicándolos por una tasa de aprendizaje (learning rate) y restando el gradiente. Esta actualización mueve los coeficientes en la dirección que reduce el costo.

Iteración: Los pasos 2-5 se repiten iterativamente durante un número fijo de veces (épocas) o hasta que el costo converja a un valor mínimo.

Resultado final: Después de que el algoritmo haya convergido, los coeficientes resultantes se utilizan como los coeficientes óptimos para el modelo de regresión lineal múltiple.

El proceso se repite hasta que se alcance un criterio de convergencia o se haya realizado un número predeterminado de iteraciones. El descenso de gradiente es una técnica fundamental en el aprendizaje automático y la optimización, y se utiliza para ajustar los parámetros de los modelos de manera que se minimice la diferencia entre las predicciones y los valores reales.
Imágen de perfil

Component Linear gradient


JavaScript

Publicado el 30 de Diciembre del 2022 por Oscar (8 códigos)
551 visualizaciones desde el 30 de Diciembre del 2022
Con este script podrás probar la manera de enviar mensajes entre components en Vue 2.6.x(famoso two data binding), y javascript ver video para mas detalles en
https://www.youtube.com/watch?v=73QHJ2upcK
sin imagen de perfil

Registro - Login - Mail - OTP


PHP

Publicado el 25 de Diciembre del 2022 por Jefferson (11 códigos)
2.664 visualizaciones desde el 25 de Diciembre del 2022

SISTEMA DE REGISTRO-LOGIN mediante EMAIL-OTP



otp_register

1) Al descomprimir hay un archivo txt que debes leer y seguir las instrucciones

-> Bien, si seguiste todos los pasos no debería petar el sistema <-

2) No posee usuario administrador (debes crearlo tu)
simplemente agregas a la tabla usuarios un campo al que puedas llamar admin tipo INT donde 1 indica que es el administrador
luego por medio de php creas controles de seguridad

3) Una vez que te logueas, recibirás un correo donde debes pulsar el botón de activar la verificación del email
(Incluye una plantilla correo para registro/verificacion email)

4) Al verificar el email el campo email_verify de la tabla usuarios cambia a TRUE o 1 permitiendo el acceso

5) Existe un campo en la tabla usuarios llamado activo tipo INT que si lo colocas a FALSE o 0 impide el acceso
(esto, por si decides crear un usuario administrador y mediante programacion php puedes darle o quitarle acceso a cualquier usuario)

6) Una vez logueado, verificado y aceptado. Puedes ingresar al sistema, no sin antes validar un codigo OTP que se te enviara
a tu correo cada vez que entres. "Incluye una plantilla correo para OTP"
(Si utilizas algun servicio SMS o WhatsApp puedes enviar ese codigo OTP por alguna de esas vias)

7) Ofrece la posibilidad de recuperar la contraseña en caso de olvido, he diseñado una password de un solo uso y que al entrar al sistema
deberias cambiarla inmediatamente. Si no lo haces esta password aleatoria quedara invalidada.

8) Al cambiar la password o contraseña por motivo de olvido, se te enviara un email notificando del cambio y te otorgaremos una nueva
password aleatoria. Si al abrir el correo no fuistes tu quien solicito el cambio de contraseña, hay un link para revertir y dejar todo
original.
(Incluye una plantilla correo para recuperacion de contraseña)