| 
	
		|  Autor | Tema: Como cifrar letra por letra en C++  (Leído 70,050 veces) |  
	| 
			| 
					
						| Royca3 | 
 
Gracias amigo pero me confundí yo utilizo C     Pero bueno, oye Como le hago para que coja la palabra que el usuario ingresa y la cambie por otras letras (especificadas por mi) Gracias Saludos.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Homo erectus |  |  |  | 
			| 
					
						| cypascal | 
 
Aquí te dejo el que hice yo en su día, que trabaja con ficheros de texto. Se puede seleccionar el paso del cifrado, y tiene en cuenta que que cuando se llega a la Z se tiene que volver a empezar por la A. También está en esta dirección:http://cypascal.blogspot.com.es/2013/04/cifrado-cesar-en-c.html /*CIFRADO CESAR EN C/C++*/
 /*Este programa se va a usar para llevar a cabo una codificación de un fichero
 de texto, mediante el codificado CESAR, que es uno de los métodos más simples
 de cifrar.
 La variable trans==translación de cifrado, es la que indica cuantas letras
 se va a correr el abecedario hacia la derecha. Ejemplo:
 trans=3
 c1=Caracter decodificado
 c2=Caracter codificado
 c2=c1+trans
 Entonces en nuestro caso si c1='A'
 c2='A'+3='D'
 
 El programa solo codifica letras, tanto mayúsculas como minúsculas:
 del ASCII 65 ('A') al 90 ('Z') y del 97 ('a') al 122 ('z').
 */
 
 #include <stdio.h>
 #include <string.h>
 
 int main(void)
 {
 FILE *dat1,*dat2;
 char nombre1[50],nombre2[50],c;
 int trans;
 
 printf("Seleccione translacion de encriptacion: "); scanf("%d", &trans);
 printf("Nombre del fichero a codificar: "); scanf("%s", &nombre1);
 printf("Nombre del fichero donde guardar codificado: "); scanf("%s", &nombre2);
 
 
 if (fopen(nombre1,"r")==NULL)
 printf("\nEl fichero no existe.\n\n");
 else
 {
 dat1=fopen(nombre1,"r");/*Se abre en modo lectura*/
 dat2=fopen(nombre2,"w");/*Se abre en modo escritura*/
 fscanf(dat1,"%c",&c);
 while (!feof(dat1))
 {
 /*Se codifica el caracter*/
 if ((c>='A')&&(c<='Z'))
 {
 c=((c+trans-'A')%('Z'-'A'+1))+'A';
 }
 else if ((c>='a')&&(c<='z'))
 {
 c=(c+trans-'a')%('z'-'a'+1)+'a';
 }
 
 /*Se escribe el caracter en el codificado*/
 fprintf(dat2,"%c",c);
 
 /*Se lee un nuevo caracter*/
 fscanf(dat1,"%c",&c);
 }
 fclose(dat1);
 fclose(dat2);/*Se cierran ambos ficheros*/
 }
 }
Salu10 y bienvenido
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Royca3 | 
 
Aquí te dejo el que hice yo en su día, que trabaja con ficheros de texto. Se puede seleccionar el paso del cifrado, y tiene en cuenta que que cuando se llega a la Z se tiene que volver a empezar por la A. También está en esta dirección:http://cypascal.blogspot.com.es/2013/04/cifrado-cesar-en-c.html /*CIFRADO CESAR EN C/C++*/
 /*Este programa se va a usar para llevar a cabo una codificación de un fichero
 de texto, mediante el codificado CESAR, que es uno de los métodos más simples
 de cifrar.
 La variable trans==translación de cifrado, es la que indica cuantas letras
 se va a correr el abecedario hacia la derecha. Ejemplo:
 trans=3
 c1=Caracter decodificado
 c2=Caracter codificado
 c2=c1+trans
 Entonces en nuestro caso si c1='A'
 c2='A'+3='D'
 
 El programa solo codifica letras, tanto mayúsculas como minúsculas:
 del ASCII 65 ('A') al 90 ('Z') y del 97 ('a') al 122 ('z').
 */
 
 #include <stdio.h>
 #include <string.h>
 
 int main(void)
 {
 FILE *dat1,*dat2;
 char nombre1[50],nombre2[50],c;
 int trans;
 
 printf("Seleccione translacion de encriptacion: "); scanf("%d", &trans);
 printf("Nombre del fichero a codificar: "); scanf("%s", &nombre1);
 printf("Nombre del fichero donde guardar codificado: "); scanf("%s", &nombre2);
 
 
 if (fopen(nombre1,"r")==NULL)
 printf("\nEl fichero no existe.\n\n");
 else
 {
 dat1=fopen(nombre1,"r");/*Se abre en modo lectura*/
 dat2=fopen(nombre2,"w");/*Se abre en modo escritura*/
 fscanf(dat1,"%c",&c);
 while (!feof(dat1))
 {
 /*Se codifica el caracter*/
 if ((c>='A')&&(c<='Z'))
 {
 c=((c+trans-'A')%('Z'-'A'+1))+'A';
 }
 else if ((c>='a')&&(c<='z'))
 {
 c=(c+trans-'a')%('z'-'a'+1)+'a';
 }
 
 /*Se escribe el caracter en el codificado*/
 fprintf(dat2,"%c",c);
 
 /*Se lee un nuevo caracter*/
 fscanf(dat1,"%c",&c);
 }
 fclose(dat1);
 fclose(dat2);/*Se cierran ambos ficheros*/
 }
 }
Salu10 y bienvenidoEste code lo que hace es buscar un archivo y "encriptarlo" verdad? Lo que yo necesito es un programa que pida una palabra o frase y que cambie las letras ejemplo A por H b por X y asi entiendes? Pero igual Gracias  saludos. |  
						| 
								|  |  
								|  |  En línea | 
 
 Homo erectus |  |  |  | 
			| 
					
						| cypascal | 
 
Ups!, perdón, pensaba que estábamos con Cesar.Pero no me queda claro, ¿Qé método de cifrado quieres utilizar?
 
 Salu10
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| CCross 
								
								 Desconectado 
								Mensajes: 36
								
								
								
								
								
								   | 
 
Buenas amigos!! Aqui otra versión del cifrado cesar donde tu puedes indicar el desplazamiento que quieras #include <stdio.h>#include <stdlib.h> int main(){     int des, i = 0, j = 0;     char cadena[30] = {0};      printf("Introduce una cadena: ");     scanf("%s", cadena);      printf("Ingrese desplazamiento: ");     scanf(" %d", &des);      for(; cadena[i]!='\0'; i++)        cadena[i]+=des;     printf("\nEncriptado es: %s \n", cadena);      for(; cadena[j]!='\0'; j++)        cadena[j]-=des;      printf("\nDesencriptado es: %s \n", cadena);      return 0;}
 Saludos    |  
						| 
								|  |  
								| « Última modificación: 11 Junio 2013, 00:09 am por CCross » |  En línea | 
 
 |  |  |  | 
			| 
					
						| amchacon 
								       
								
								 Desconectado 
								Mensajes: 1.211
								
								   | 
 
for(; cadena[i]!='\0'; i++)        cadena[i]+=des; printf("\nEncriptado es: %s \n", cadena); for(; cadena[j]!='\0'; j++)        cadena[j]-=des;printf("\nDesencriptado es: %s \n", cadena);
 Y digo yo, que necesidad hay de hacer el caso y el inverso: char cadena_aux[30]; for(; cadena[i]!='\0'; i++){        cadena[i]+=des;        cadena_aux[i] = cadena[i];}cadenaaux[i] = '\0'; printf("\nEncriptado es: %s  y descifrado es %s\n", cadena, cadena_aux); 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Royca3 | 
 
Bueno Alguien que me explique algo    El código de leosansan pero necesito que en lugar de ese método lo cambie por este: A = X B = J C = O D = P E = Z F = W G = A H = U I = Ñ J=L K = D L=Q M=S N = F Ñ=R O = B P=M Q=V R=H S=K T = N U=Y V= T W=I X  = E Y= G Z = C |  
						| 
								|  |  
								|  |  En línea | 
 
 Homo erectus |  |  |  | 
			| 
					
						| CCross 
								
								 Desconectado 
								Mensajes: 36
								
								
								
								
								
								   | 
 
Y digo yo, que necesidad hay de hacer el caso y el inverso:
 Pues para descifrar no y ademas la forma que propones no hace lo deseado ya que la cadena ya la habias modificado previamente y luego asignas los valores atuales que son los cifrados a la cadena auxiliar Saludos    |  
						| 
								|  |  
								| « Última modificación: 11 Junio 2013, 00:08 am por CCross » |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| amchacon 
								       
								
								 Desconectado 
								Mensajes: 1.211
								
								   | 
 
Pues para descifrar no y ademas la forma que propones no hace lo deseado ya que la cadena ya la habias modificado previamente y luego asignas los valores atuales que son los cifrados a la cadena auxiliar Saludos   Huy es verdad    Habría que hacer la igualación antes    |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Codificacion en archivos bat, letra ñ Scripting
 | santi810 | 3 | 13,277 |  1 Diciembre 2013, 18:57 pm por Eleкtro
 |  
						|   |   | [DUDA] Como Desactivar Dispositivos Portátiles Para Que Se Le Asigne Una Letra Windows
 | KZN | 3 | 3,353 |  11 Marzo 2014, 17:00 pm por Randomize
 |  
						|   |   | Dibujar letra 'T' PHP
 | luchi | 2 | 2,586 |  20 Abril 2014, 22:14 pm por luchi
 |  
						|   |   | Como con una letra direccionarme a la tabla/registro? Programación C/C++
 | enzopaez14 | 1 | 2,430 |  5 Septiembre 2016, 02:50 am por AlbertoBSD
 |  
						|   |   | Comparar letra una letra en un array, con una letra del abcdario Programación C/C++
 | Naimaderis | 2 | 4,480 |  10 Marzo 2017, 04:24 am por Naimaderis
 |    |