De acuerdo con las reglas de cifrado a continuación, establezca la clave de cifrado KEY especificada y la función de cifrado de la cadena original en n caracteres en lenguaje C. . . . .
#incluye ltstdio.h gt
#incluye ltstdlib.h gt
#¿Definición? ¿norte? 10//Número de caracteres
#Definición? ¿llave? 6//Clave(1~n)
int? makePassword(char?*palabra, char?*contraseña)
{
int? I = 0; //Recorre los subíndices de la matriz original
int? Verifique [n-1]; // Si se accede a la etiqueta.
int? start = 0; //Apunta a la posición donde está insertada actualmente la cadena original.
int? pos = 0; //Apunta a la posición de inserción en la matriz de texto cifrado.
para(I = 0;i ltn-1;i)? ¿Revisarme? =?0;//Inicializado como no accedido
if(key lt;0 | | key gt=n-1)? ¿devolver? 0; //La clave está fuera de los límites y no puede regresar.
I = 0;
mientras(iniciar lt; n-1)
{
Si(0 = = comprobar[I ])//Si no hay ninguna marca, pos comienza a contar (omitiendo la ubicación donde se almacena el valor).
{
//printf(" check[ d]= d \ n ", I, check[I] // Para realizar pruebas, puede ver el contenido del marca.
if( pos==clave)
{
//printf(" pos = d, contraseña[d]=c\n ", pos, I, palabra [inicio]); // Para realizar pruebas, puede ver el valor almacenado del punto de inserción y el valor del subíndice correspondiente en la matriz original.
pos? =?0;
¿Contraseña[i]? =?word[start];
¿Revisar [yo]? =?1;//Marcar como visitado
}
}
if(i==n-2)? I = 0; //Debido a que palabra [n-1] es el terminador, no participa en el ciclo, es decir, comienza a recorrer la matriz original cuando se recuerda la última letra.
¿Y si? i;
}
Contraseña[n-1]= '\0'; //Fin del texto cifrado con terminador
¿Regresar? 1;
}
int? Señor()
{
¿Ciel? word[n]="it 'Prefecto", contraseña[n]; //Tenga en cuenta que la longitud de la cadena debe ser igual a n-1, dejando uno para el terminador '\0'.
Si (hacer contraseña (palabra, contraseña)== 1)//Imprimir si la conversión se realizó correctamente.
printf(" original: s \ n texto cifrado: s \ n ", palabra, contraseña
¿Regresión? 0;
}