开始使用Linux上的命令行加密工具在此页

1简介2使用GPG加密2.1GPG简介2.2使用对称秘钥加密2.3私钥加密2.4为何选择GPG?

3.1OpenSSL简介3.2生成私钥和公钥3.3加密数据3.4揭秘数据

1简介

加密是以只有授权方能够读取的方法对消息或信息进行编码的过程。在我们这个数字时代几乎没有隐私,我们的数据加密是最须要的工具之一。大多数应用程序(如gmail)就会加密我们的数据,但您系统上的数据依然不安全linux 加密命令,而且有黑客或未经授权的用户等待访问它们。将数据诈骗风险降至最低的一种方式是加密虽然在我们本地系统上也存在的数据。

教程演示了使用命令行工具在Linux系统上加密数据的几种方式。

2使用GPG加密2.1GPG简介

GPG代表GNUPrivateGuard,它是一个命令行实用程序linux 加密命令,用于使用对称或私钥加密来加密和揭秘数据文件或文件夹。GPG是PGP加密软件套件的GPL许可代替品。OpenPGP兼容系统也使用GPG。

2.2使用对称秘钥加密

这儿我有一个名为test.txt的文件,我将对其进行加密之后使用对称秘钥揭秘,并将揭秘后的文本复印到另一个名为output.txt的文件中.

运行以下命令使用对称秘钥加密文件test.txt。选项“-c”表示GPG使用对称秘钥。

gpg -c test.txt

结果如右图所示。第一次运行GPG时,会创建一个.gnupg文件夹。它包含加密过程所需的文件。之后它会要求您输入密码句子两次。请确保您输入了一个强密码并记住它,由于您将来须要用它来揭秘您的文件。

为此,一旦密码输入正确,还会创建一个名为test.txt.gpg的文件。这是加密文件。右图是加密前后的文件,可以看见加密后的文本是不可读的格式。

使用以下命令揭秘加密文件

gpg -o output.txt test.txt.gpg

系统将提示您输入用于加密的密码。一旦您输入正确,output.txt文件将被创建,其内容与test.txt的内容相同。揭秘的输出可能类似于右图:

2.3私钥加密

这儿我们将使用GPG的公/公钥加密机制对一组文件进行加密。它涉及创建一个不应与任何人共享的公钥和一个必须与想要向您发送加密数据的人共享的私钥。

首先,我们必须将文件打包到一个压缩文件夹中。这儿我有一个名为enctest的目录linux服务器搭建,上面有三个文件test1.txt到test3.txt。我们将压缩这个目录下的tar.gz文件。我将使用以下命令创建压缩的tar.gz存档:

tar czf files.tar.gz ~/enctest

这将创建一个文件files.tar.gz。我们如今必须生成私钥/公钥对。运行以下命令生成秘钥:

gpg --gen-key

请记住,这只需执行一次,而且可以使用此秘钥加密任意数目的文件和文件夹。输入此命令后linux 论坛,将寻问各类问题。问题将是:

就会寻问密码句子等其他内容,系统会提示您输入两次。确保使用强密码并记住密码。您的凭据也将被使用。我在此处使用的凭据(在下边提供)仅用于测试。建议您使用真实的凭据,如姓名、电子电邮ID并提供一些评论。

以下内容显示了我的答案以及输出结果:

gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) "
Real name: John Doe
Email address: 
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) "
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
    

输入密码后,它都会开始生成秘钥。它会要求你做一些工作。建议联通键盘或键入内容或使用驱动器打开一些文件。它将使用这项工作来世成随机位。您可能须要多次执行此操作。我的输出如下所示:

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 187 more bytes)
+++++
...+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 92 more bytes)
.....+++++
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 114 more bytes)
+++++

完成后,秘钥已生成。它看上去类似于以下内容:

gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
gpg: key FA2314B6 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/FA2314B6 2015-04-02
      Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
uid                  John Doe (tis is key generation) 
sub   2048R/6F78E642 2015-04-02

这儿有两件重要的事情:提供强密码并确保记住您的密码

如今秘钥已生成,我们如今必须导入私钥文件以将其导出其他系统或通过电子电邮发送。要开始导入,请使用以下命令:

gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

将JohnDoe替换为您在生成秘钥时使用的名称。

还建议备份公钥。我们可以使用gpg来做到这一点。要进行备份,请使用以下命令:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

这儿的文件file-enc-privkey.asc将安全地保存公钥的备份。导入和秘钥备份完成后,我们如今可以加密和揭秘.tar.gz文件。使用以下命令进行加密:

gpg --encrypt --recipient 'John Doe' files.tar.gz

记得把里面命令中的JohnDoe改成你在生成秘钥时给的名子,否则加密会失败。当命令成功运行时,将创建一个名为files.tar.gz.gpg的加密文件。

如今我们可以使用以下命令揭秘tar.gz存档。它将使用公钥和密码来揭秘并提供揭秘的文件夹。使用以下命令揭秘:

gpg --output output.tar.gz --decrypt files.tar.gz.gpg

里面的命令将要求输入密码,之后揭秘加密文件并创建一个名为output.tar.gz的压缩文件,之后可以使用tar将其提取到文件夹以拿回文件.右图显示了加密和揭秘命令的输出:

2.4为何选择GPG?

linux加密解密命令_linux加密文件命令_linux 加密命令

GPG同时支持:私钥加密和对称加密,这提供了很大的灵活性,可用于广泛的应用程序。不须要提供任何类型的敏感信息,但是gpg可以使用私钥拥有任意数目的加密器。用户可以从多种加密算法中进行选择。这种诱因使它成为加密文件和文件夹或数据的特别有用的安全工具。

3使用OpenSSL加密3.1OpenSSL简介

OpenSSL项目是一项协作努力,致力开发一个强悍的、商业级的、功能齐全的开源工具包,实现安全套接字层(SSLv2/v3)和传输层安全(TLS)合同以及一个全硬度的通用目的加密库。OpenSSL可用于大多数类Unix操作系统,它基于SSLeay。OpenSSL还支持许多SSH、SFTP和SCP应用程序。这儿我们使用OpenSSL通过使用非对称加密和AES密码来加密数据。对称加密可用于加密更大的文件或数据。

3.2生成私钥和公钥

我们要做的第一件事是生成私钥和公钥。我们首先生成公钥。因此,请使用以下命令:

openssl genrsa -out private_key.pem 1024

上述命令指示OpenSSL使用RSA生成一个大小为1024字节的公钥。之后将秘钥安全地储存在名为private_key.pem的文件中。此命令的输出类似于右图:

生成公钥(秘密)后,我们可以使用它来世成私钥,便于它们产生一对。使用以下命令生成私钥:

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

它将如右图所示:

3.3加密数据

我们如今可以使用私钥来加密数据。这儿我们将对文件“test.txt”进行加密,并将加密后的文本储存在文件encrypt.dat中。执行以下命令:

openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

右图显示了加密前后的文本文件:

3.4揭秘数据

这儿我们使用公钥来揭秘文件。运行以下命令:

openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

文件decrypt.txt将包含揭秘后的数据。上述命令的执行以及文件内容如右图所示:

4。推论

里面显示的方式在慎重使用时十分安全,但是允许多个密码和安全级别以适应不同的安全级别。为此,这种中的任何一个都可以用于加密文件/文件夹和原始数据的各类场景。

5个链接

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复