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

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

从加密开始

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

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

介绍 Linux 上的 MD5 和 Base64 命令

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

MD5 和 Base64 之间的根本区别

MD5 Base64
是一种单向哈希算法 是一种双向加密算法
加密后的数据无法解密为原始形式 加密后的数据可以解密为其原始形式
主要用于在数据库上存储密码/敏感数据以及验证包的完整性 用于通过仅接受 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 对其进行编码。 对于这个例子,我们将使用文件 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”文件创建哈希。

[email protected]:~# ls example.txt  [email protected]:~# cat example.txt  Hi this is a test file from LinuxforDevices  [email protected]:~# md5sum example.txt > md5sum.md5 [email protected]:~# base64 example.txt > base64.txt  [email protected]:~# ls base64.txt  example.txt  md5sum.md5 
创建哈希创建哈希

验证散列和文件的内容是否正确。

[email protected]:~# cat example.txt  Hi this is a test file from LinuxforDevices  [email protected]:~# md5sum -c md5sum.md5  example.txt: OK  [email protected]:~# base64 -d base64.txt  Hi this is a test file from LinuxforDevices 
使用 Md5sum Base64 验证哈希使用 Md5sum Base64 验证哈希

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

[email protected]:~# cat >> example.txt  NEW LINE [email protected]:~# cat example.txt  Hi this is a test file from LinuxforDevices NEW LINE  [email protected]:~# md5sum -c md5sum.md5  example.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match  [email protected]:~# base64 -d base64.txt  Hi this is a test file from LinuxforDevices 
更改内容验证哈希更改内容验证哈希

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

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

最后的话…

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

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