如何在 Linux 中使用 MD5 和 Base64 命令?

今天让我们冒险进入加密领域,了解 Linux 中的 md5 和 base64 命令。 加密是每个负责保护数据安全的人的主题。 数据泄露可能导致数千甚至数百万的损失。 比金钱更大的损失是信誉的损失。 加密会对您的数据进行编码,以防止未经授权的访问。 在本教程中,我们将介绍一些非常基本的方面,以确保通过 Internet 传输的数据是完整的并且没有人篡改它。

目录

从加密开始

在数据库中存储密码时,最安全的方法是使用单向加密算法(如 MD5)对密码进行加密,使其无法反转。 当用户输入密码时,密码会再次使用 MD5 加密,然后在后端比较哈希值以验证密码是否相同。

另一方面,Base64 是一种常规的双向加密算法,它允许对传递给它的数据进行加密和解密。 如果您想确保安全性,这不会是最佳选择,但如果您最初的想法是以明文形式发送数据,那么使用它会是一个好主意。

Linux 上的 MD5 和 Base64 命令介绍

让我们直接进入它并了解 MD5 和 Base64 命令的不同用途。 我们将介绍使用这些命令时可以使用的基本语法和一些用例。

MD5 和 Base64 的根本区别

MD5Base64
是一种单向哈希算法是一种双向加密算法
加密后的数据无法解密为原始形式加密后的数据可以解密为原始形式
主要用于在数据库中存储密码/敏感数据以及验证包的完整性用于通过仅接受 ASCII 格式信息的网络传输数据。

当您需要传输包含各种字符(如 Unicode)的文件,或具有某些网络不接受的格式时,使用 Bas64 对文件进行编码可以传输文件。 但是 Base64 不再像以前那样受欢迎的原因是:

  • 用例非常有限,因为加密非常弱
  • 我们的数据通过的几乎所有网络和路由器都接受所有基本格式(包括 Unicode)的数据
  • 现在有更好的算法

显然,甚至有更多理由投票支持 base64 的存在,但与目前 MD5 的使用相比,base64 无处可寻。 但是现在您已经对算法有了很好的理解,让我们继续讨论它们在 Linux 上的用法

Linux 中的 md5sum 命令

MD5,Message-Digest algorithm 5 的缩写,是一种密码散列算法。 它被广泛用作校验和命令来验证文件或字符串的完整性。 为此,它使用一个 128 位字符串,无论为特定文件生成多少次,该字符串都将保持不变。

使用 MD5 生成的哈希是不可逆的,因此无法确定生成特定哈希的内容。

Linux 上 md5sum 命令的基本语法

md5sum [option] [file]

这会为我们的文件创建一个字母数字哈希,并根据我们的选项显示它。 这是我们在 Linux 中使用 MD5 命令时可用的一些选项的列表。

选项影响
-b以二进制格式读取文件以创建或打印 MD5 校验和
-t以文本格式读取文件以创建或打印 MD5 校验和。 这是默认选项
-C从文件中读取 MD5 并检查它
-严格的如果校验和文件格式不正确,则导致非零退出代码
-w在校验和文件格式不正确的情况下警告用户

虽然这些是最常用的选项,但您可以使用 man md5sum 探索其他选项。 现在让我们讨论 Base64 命令。

Linux 中的 base64 命令

现在 base64 不是一种加密算法,而只是一种编码算法,它允许您在传输文件的同时保持完整性。 (一个有趣的 StackOverflow 问题)

Linux 中 base64 命令的基本语法

base64 [option] [input_file] [output_file]

这需要我们的 input_file,对其进行编码或解码,然后根据我们的选项将结果保存在 output_file 中。 以下是我们在 Linux 的 Base64 命令中使用的五个主要选项。

选项影响
-e读取输入文件,将其内容编码为 Base64 格式并将其保存到我们的输出文件中
-d读取输入文件,使用 Base64 格式解码其内容并将其保存到我们的输出文件
-u显示有关使用 Base64 命令的信息
-一世读取文件进行解码,同时忽略所有非字母字符
-n默认情况下,Base64 命令在解码时使用错误检查。 此选项告诉命令跳过错误检查

在 Linux 中使用 md5sum 和 base64 命令

现在我们了解了 Linux 中的 MD5 和 Base64 命令,是时候使用它们了。

MD5 和 Base64 命令通常用于三个目的——

  • 创建哈希
  • 验证哈希
  • 检查包签名。

让我们分别看看这些。

使用 md5sum 和 base64 命令创建哈希

要在 Linux 中使用 MD5 和 Base64 命令创建散列,我们需要使用 MD5 生成散列,然后使用 Base64 对其进行编码。 为了这 example,我们将使用文件 TESTFILE.txt 来生成哈希

打开终端并键入以下命令。 根据您的需要替换文件名。

md5sum <filename>
base64 <filename>
Md5sum Base64 用法

如您所见,我们已经根据文件中的内容生成了哈希值。 现在您需要记住,生成的哈希是基于文件中存在的内容,而不是基于文件名。 如果内容更改,哈希值也会更改,这将有助于接收用户了解文件已被篡改。

让我们使用输出重定向运算符“>”将这些哈希值保存在单个文件中。

Save Md5 Base64 哈希

验证 MD5 或 Base64 哈希

就像我们为文件创建 Base64 编码的 MD5 哈希一样,这些命令也可用于验证特定文件的哈希。 为此,我们首先使用 Base64 命令解码 pass.txt 的内容,并将解码后的数据保存在 decode.txt 作为我们的输出文件。

以下屏幕截图显示了这是如何完成的。

base64 -d <hashfile>
md5sum -c <hashfile>
Md5 Base64之间的区别Md5 Base64之间的区别

这是使用 MD5 与 Base64 时您会注意到的主要区别。 Base64 直接加密数据,使明文文件在通过 Internet 传输时不可读。 解密后,文件内容直接可见。

与 MD5 相比,它只是简单地验证文件中的数据是否与生成哈希之前的数据相同。 如您所见,它说“example.txt: OK”,这是对生成的哈希的确认 example.txt 与验证文件时立即生成的匹配。

检查包签名

让我演示如何验证从 Internet 下载的文件的包签名。 如今,您会发现 .md5 文件可以与原始文件一起下载。

由于验证哈希的过程将是相同的,因此我将采取以下 3 个步骤来演示我们如何使用 MD5 来验证包签名。

  1. 显示文件内容并为文件创建 MD5 和 Base64 Hash
  2. 验证哈希和文件的内容是否正确。
  3. 更改文件的内容并验证文件的哈希值

让我们首先从“example.txt”文件。

root@localhost:~# ls
example.txt

root@localhost:~# cat example.txt 
Hi this is a test file from LinuxforDevices

root@localhost:~# md5sum example.txt > md5sum.md5
root@localhost:~# base64 example.txt > base64.txt

root@localhost:~# ls
base64.txt  example.txt  md5sum.md5
创建哈希创建哈希

验证哈希和文件的内容是否正确。

root@localhost:~# cat example.txt 
Hi this is a test file from LinuxforDevices

root@localhost:~# md5sum -c md5sum.md5 
example.txt: OK

root@localhost:~# base64 -d base64.txt 
Hi this is a test file from LinuxforDevices
使用 Md5sum Base64 验证哈希使用 Md5sum Base64 验证哈希

更改文件内容并再次验证哈希

root@localhost:~# cat >> example.txt 
NEW LINE
root@localhost:~# cat example.txt 
Hi this is a test file from LinuxforDevices
NEW LINE

root@localhost:~# md5sum -c md5sum.md5 
example.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

root@localhost:~# base64 -d base64.txt 
Hi this is a test file from LinuxforDevices
更改内容验证哈希更改内容验证哈希

如您所见,这次我们更改文件内容后,哈希验证失败并给我们一个消息警告校验和不匹配。

但是在 Bas64 的情况下,它并没有真正检查原始文件中的内容是什么。 它只是解密呈现给它的任何 base64 数据。 所以我们得到了我们最初加密的数据。

最后的话……

我们在这里介绍了 md5 和 base64 命令的基本用法,但您还可以使用更多。 但要记住的主要指示是:

  • MD5 是一种散列算法,md5sum 命令用于通过与通过 Internet 传输之前的散列数据进行比较来验证包的完整性。
  • Base64 是一种加密算法(尽管它太弱而无法用于重要的事情)。 它的工作原理是加密呈现给它的数据,然后将加密的文本解密回原始数据。