Código de C/Visual C - BASE-64

Imágen de perfil

BASE-64gráfica de visualizaciones


C/Visual C

Publicado el 18 de Junio del 2023 por Hilario (122 códigos)
4.425 visualizaciones desde el 18 de Junio del 2023
INITIUM SAPIENTIAE TIMOR DOMINI.
**********************************************************
Hilario Iglesias Martínez.
*********************************************************

Este programa realizado en lenguaje C, bajo consola en plataforma Ubuntu 20.04.6 LTS.
Lo realizamos utilizando la función fgets para leer el texto introducido por el usuario desde la consola y almacenarlo en la variable input_text. Luego, simplemente imprimimos el texto introducido en la pantalla utilizando printf.

El tamaño máximo del texto a introducir se establece en 300 caracteres en este ejemplo, pero puedes ajustarlo según tus necesidades.

Base64 es un algoritmo de codificación que permite transformar cualquier carácter de cualquier idioma en un alfabeto que consta de letras, dígitos y signos latinos. Con esto podemos convertir caracteres especiales como logogramas chinos, emojis e incluso imágenes en una secuencia "legible" (para cualquier ordenador), que se puede guardar y/o transferir en cualquier otro lugar. A menudo se utiliza para transmitir datos binarios por medio de transmisiones que tratan sólo con texto, como para enviar imágenes y archivos adjuntos por correo electrónico, en HTML etc.

***************************************************************************************
La compilación se realiza utilizando el siguiente
comando:
gcc -Werror encripta.c -o encripta

Se puede ejcutar el programa bajo consola de

linux con este comando:

./encripta
**********************************************************************************

Requerimientos

REQUERIMIENTOS BASICOS.
***********************************
El programa fue realizado bajo plataforma Linux,
concretamente: Ubuntu 20.04.6 LTS.
Se utilizó el ide Sublime text.

Siendo la versión de gcc, la siguiente:
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.

V-0-

Actualizado el 1 de Agosto del 2023 (Publicado el 18 de Junio del 2023)gráfica de visualizaciones de la versión: V-0-
4.426 visualizaciones desde el 18 de Junio del 2023
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
*************************************************
 encripta.c
**************************************************
Hilario Iglesias Martínez.
***********************************************
Planteamos este programa de la serie encriptación
en lenguaje C, realizando este sencillo ejemplo,
bajo plataforma Linux Ubuntu 20.04.6 LTS,
para encriptar una frase introducida por consola,
con un máximo, en este caso, de 300 caracteres.
La compilación se realiza utilizando el siguiente
comando:
gcc -Werror encripta.c -o encripta
Se puede ejcutar el programa bajo consola de
linux con este comando.
./encripta
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/* Tabla de caracteres en Base64, que planteamos para la encriptación*/
 
const char base64_table[] = "NTDFRFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
// Función para encriptar un texto en Base64
char* base64_encode(const char* input) {
    size_t input_length = strlen(input);
    size_t encoded_length = ((input_length + 2) / 3) * 4;  // Longitud del texto encriptado
    char* encoded_data = (char*)malloc(encoded_length + 1);  // +1 para el carácter nulo
 
    if (encoded_data == NULL) {
        printf("Error de memoria.");
        exit(1);
    }
 
/*
En programación informática , Base64 es un grupo de esquemas de codificación
de binario a texto que representan datos binarios
(más específicamente, una secuencia de bytes de 8 bits )
en secuencias de 24 bits que pueden
representarse mediante cuatro dígitos Base64 de 6 bits.
Común a todos los esquemas de codificación de binario a texto,
Base64 está diseñado para transportar datos almacenados en
formatos binarios a través de canales que solo admiten
contenido de texto de manera confiable. Base64 es particularmente
frecuente en la World Wide Web , donde uno de sus
usos es la capacidad de incrustar archivos de imagen u
otros activos binarios dentro de activos textuales, como archivos HTML y CSS .
*/
    size_t i, j;
    for (i = 0, j = 0; i < input_length; i += 3, j += 4) {
        unsigned int octet_a = i < input_length ? (unsigned char)input[i] : 0;
        unsigned int octet_b = i + 1 < input_length ? (unsigned char)input[i + 1] : 0;
        unsigned int octet_c = i + 2 < input_length ? (unsigned char)input[i + 2] : 0;
 
        encoded_data[j] = base64_table[octet_a >> 2];
        encoded_data[j + 1] = base64_table[((octet_a & 3) << 4) | (octet_b >> 4)];
        encoded_data[j + 2] = base64_table[((octet_b & 15) << 2) | (octet_c >> 6)];
        encoded_data[j + 3] = base64_table[octet_c & 63];
    }
 
    // Rellena con '=' si es necesario
    size_t padding = input_length % 3;
    if (padding == 1) {
        encoded_data[encoded_length - 1] = '=';
        encoded_data[encoded_length - 2] = '=';
    } else if (padding == 2) {
        encoded_data[encoded_length - 1] = '=';
    }
 
    encoded_data[encoded_length] = '\0';
    return encoded_data;
}
 
int main()
/*
Lamadas a la funcion de encriptación
*/
 
{
 
char input_text[300];
 
/* Tamaño máximo del texto a introducir.
El texto a introducir estará dimensionado por input_text[300],
pudiendo ser modificado este parámetro o buffer, según se quiera
dimensionar el texto*/
 
    printf("Introduce un texto: ");
    fgets(input_text, sizeof(input_text), stdin);
 
/*Funciones para ebcriptar y salida de texto encriptado por consola*/
 
    char* encoded_text = base64_encode(input_text);
 
    printf("Texto original: %s\n", input_text);
    printf("Texto encriptado: %s\n", encoded_text);
 
    free(encoded_text);
 
    return 0;
}



Comentarios sobre la versión: V-0- (0)


No hay comentarios
 

Comentar la versión: V-0-

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7382