GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo calcular la suma de verificación CRC en Linux usando el comando Cksum

La suma de comprobación se utiliza para verificar la integridad de los datos. Supongamos que se está copiando un archivo a través de una red o un sistema y debido a algún evento como la pérdida de conexión de red o el reinicio repentino de la máquina, los datos no se copiaron por completo.

Ahora, ¿cómo verificaría la integridad de los datos? Bueno, es a través del mecanismo de suma de verificación CRC que se puede verificar la integridad de los datos. Hay varios mecanismos a través de los cuales se puede calcular una suma de comprobación CRC. Por ejemplo, en uno de nuestros artículos (suma de verificación de encabezado IP) discutimos cómo encontrar la suma de verificación de un encabezado IP. En este artículo, nos centraremos en el comando Linux 'cksum' que se usa para calcular la suma de verificación de los archivos o los datos proporcionados en la entrada estándar.

¿Qué es CRC?

CRC significa verificación de redundancia cíclica.

La suma de verificación se puede calcular aplicando el mecanismo de verificación de redundancia cíclica (CRC) sobre los datos que se están comunicando. Cada bloque de datos que viaja por el canal de comunicación se adjunta con un código CRC o suma de verificación y cuando el bloque de datos llega al destino, esta verificación se aplica nuevamente para generar un valor de suma de verificación. Si la suma de verificación generada en el destino y el valor de la suma de verificación en el bloque de datos son iguales, se cree que los datos no están dañados y se pueden usar más, pero si los dos valores de la suma de verificación no son iguales, en ese caso se dice que los datos están dañados. o infectado.

El nombre CRC se debe a que:

  • Este mecanismo se basa en los fundamentos de los códigos cíclicos (por lo tanto, cíclico ).
  • El código adjunto con los datos como suma de verificación es redundante, es decir, no agrega valor a los datos que se transfieren (por lo tanto, redundancia ).
  • Es un cheque (por lo tanto cheque )

El comando cksum

El comando cksum se usa para calcular la verificación de redundancia cíclica (CRC) para cada archivo que se le proporciona como argumento. CRC se vuelve importante en situaciones en las que se debe verificar la integridad de los datos. Usando el comando cksum, uno puede comparar la suma de verificación del archivo de destino con la del archivo de origen para concluir si la transferencia de datos fue exitosa o no.

Además de proporcionar el valor CRC, este comando también produce el tamaño y el nombre del archivo en la salida. El comando sale con estado cero en caso de éxito y cualquier otro valor de estado indica falla.

Se puede obtener información detallada sobre este comando escribiendo lo siguiente en el símbolo del sistema:

$ info coreutils 'cksum invocation'

ejemplos del comando cksum

1. Un ejemplo básico

En un nivel muy básico, el comando cksum se puede utilizar para mostrar la suma de comprobación de un archivo.

$ cksum testfile.txt
3000792507 3 testfile.txt

El primer valor (número grande) en la salida anterior es la suma de verificación del archivo, luego tenemos el tamaño del archivo y finalmente el nombre del archivo.

2. La suma de comprobación cambia con el cambio de contenido

El archivo de prueba 'testfile.txt' tiene los siguientes contenidos:

$ cat testfile.txt
Hi

Para calcular la suma de comprobación del archivo de prueba, páselo como argumento al comando cksum:

$ cksum testfile.txt
3000792507 3 testfile.txt

Ahora, modifique el contenido del archivo:

$ cat testfile.txt
Hi everybody.

Pase nuevamente el archivo de prueba como argumento al comando cksum:

$ cksum testfile.txt
2559130041 14 testfile.txt

Entonces vemos que con el cambio en los contenidos, la suma de verificación cambia.

3. El cambio de contenido no siempre significa aumento o disminución de tamaño

Bueno, lo anterior también es cierto fundamentalmente e incluso para chksum también. Veamos lo que significa:

Verifique el contenido del archivo de prueba 'testfile.txt':

$ cat testfile.txt
Hi everybody

Tenga en cuenta la suma de comprobación:

$ cksum testfile.txt
2559130041 14 testfile.txt

Ahora, cambie el contenido sin agregar o eliminar algo, sino reemplazando un carácter por otro para que el tamaño del archivo permanezca igual.

$ cat testfile.txt
Hi everybudy.

Como puede ver, reemplacé 'o' con 'u'.

Compare la suma de comprobación ahora:

$ cksum testfile.txt
3252191934 14 testfile.txt

Entonces vemos que la suma de verificación cambió incluso si el cambio fue de un carácter reemplazado por otro.

4. Una copia interrumpida

Suponga que está copiando una carpeta comprimida que contiene varias subcarpetas y archivos de una ubicación a otra y, por cualquier motivo, el proceso de copia se interrumpió, entonces, ¿cómo verificaría si todo se copió correctamente o no? Bueno, cksum lo hace posible, ya que ahora sabemos que en el caso de una copia parcial, la suma de verificación general del destino diferiría de la de la carpeta de origen.

Puede simular este escenario de la siguiente manera:

Creé Linux.tar.gz y Linux_1.tar.gz desde la misma carpeta 'Linux'. La diferencia es que Linux_1.tar.gz se creó cuando la carpeta "Linux" contenía un archivo de texto adicional.

Entonces, el escenario anterior simula cuando se estaba copiando Linux_1.tar.gz pero se interrumpió cuando solo quedaba un archivo de texto para copiar en el destino Linux.tar.gz

Ahora, cuando comparo la suma de verificación de estos dos archivos, veo

$ cksum Linux.tar.gz
756656601 1037079 Linux.tar.gz

$ cksum Linux_1.tar.gz
2598429125 1037184 Linux_1.tar.gz

Entonces, la salida anterior muestra diferentes valores de suma de verificación que sugieren una copia incorrecta del archivo.

5. Suma de comprobación de la salida estándar

Este comando proporciona una función en la que el usuario puede escribir simplemente 'cksum' o 'cksum-' y escribir en stdin y luego presionar Ctrl+D un par de veces. De esta forma, cksum proporciona la suma de comprobación de los datos introducidos en la entrada.

$ cksum
Lets check the checksum1135634677 23

En el ejemplo anterior, en realidad calculamos la suma de verificación de la cadena "Vamos a verificar la suma de verificación".


Linux
  1. Cómo guardar la salida del comando en un archivo en Linux

  2. ¿Cómo matar un proceso en Linux usando el comando?

  3. Cómo dividir iso o archivo usando el comando 'dividir' en Linux

  4. Cómo crear archivos dispersos en Linux usando el comando 'dd'

  5. ¿Cómo adjuntar un archivo usando el comando de correo en Linux?

Cómo crear un archivo en Linux usando Terminal

Cómo bloquear un archivo de texto en Linux usando el comando flock

Cómo mezclar líneas en un archivo en Linux

Cómo verificar la suma de verificación SHA256 del archivo en Linux

Cómo usar el comando lsof en Linux

Cómo usar el comando shred de Linux