亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用OpenSSL加密和解密文件

發布時間:2021-06-28 16:35:03 來源:億速云 閱讀:238 作者:chen 欄目:數據安全

這篇文章主要講解了“如何使用OpenSSL加密和解密文件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用OpenSSL加密和解密文件”吧!

加密是對消息進行編碼的一種方法,這樣可以保護消息的內容免遭他人窺視。一般有兩種類型:

  • 密鑰加密或對稱加密

  • 公鑰加密或非對稱加密

密鑰加密secret-key encryption使用相同的密鑰進行加密和解密,而公鑰加密public-key encryption使用不同的密鑰進行加密和解密。每種方法各有利弊。密鑰加密速度更快,而公鑰加密更安全,因為它解決了安全共享密鑰的問題,將它們結合在一起可以最大限度地利用每種類型的優勢。

公鑰加密

公鑰加密使用兩組密鑰,稱為密鑰對。一個是公鑰,可以與你想要秘密通信的任何人自由共享。另一個是私鑰,應該是一個秘密,永遠不會共享。

公鑰用于加密。如果某人想與你交流敏感信息,你可以將你的公鑰發送給他們,他們可以使用公鑰加密消息或文件,然后再將其發送給你。私鑰用于解密。解密發件人加密的消息的唯一方法是使用私鑰。因此,它們被稱為“密鑰對”,它們是相互關聯的。

如何使用 OpenSSL 加密文件

OpenSSL 是一個了不起的工具,可以執行各種任務,例如加密文件。本文使用安裝了 OpenSSL 的 Fedora 計算機。如果你的機器上沒有,則可以使用軟件包管理器進行安裝:

alice $ cat /etc/fedora-release Fedora release 33 (Thirty Three) alice $ alice $ openssl version OpenSSL 1.1.1i FIPS  8 Dec 2020 alice $

要探索文件加密和解密,假如有兩個用戶 Alice 和 Bob,他們想通過使用 OpenSSL 交換加密文件來相互通信。

步驟 1:生成密鑰對

在加密文件之前,你需要生成密鑰對。你還需要一個密碼短語passphrase,每當你使用 OpenSSL 時都必須使用該密碼短語,因此務必記住它。

Alice 使用以下命令生成她的一組密鑰對:

alice $ openssl genrsa -aes128 -out alice_private.pem 1024

此命令使用 OpenSSL 的 genrsa 命令生成一個 1024 位的公鑰/私鑰對。這是可以的,因為 RSA 算法是不對稱的。它還使用了 aes128 對稱密鑰算法來加密 Alice 生成的私鑰。

輸入命令后,OpenSSL 會提示 Alice 輸入密碼,每次使用密鑰時,她都必須輸入該密碼:

alice $ openssl genrsa -aes128 -out alice_private.pem 1024 Generating RSA private key, 1024 bit long modulus (2 primes) ..........+++++ ..................................+++++ e is 65537 (0x010001) Enter pass phrase for alice_private.pem: Verifying - Enter pass phrase for alice_private.pem: alice $ alice $ alice $ ls -l alice_private.pem -rw-------. 1 alice alice 966 Mar 22 17:44 alice_private.pem alice $ alice $ file alice_private.pem alice_private.pem: PEM RSA private key alice $

Bob 使用相同的步驟來創建他的密鑰對:

bob $ openssl genrsa -aes128 -out bob_private.pem 1024 Generating RSA private key, 1024 bit long modulus (2 primes) ..................+++++ ............................+++++ e is 65537 (0x010001) Enter pass phrase for bob_private.pem: Verifying - Enter pass phrase for bob_private.pem: bob $ bob $ ls -l bob_private.pem -rw-------. 1 bob bob 986 Mar 22 13:48 bob_private.pem bob $ bob $ file bob_private.pem bob_private.pem: PEM RSA private key bob $

如果你對密鑰文件感到好奇,可以打開命令生成的 .pem 文件,但是你會看到屏幕上的一堆文本:

alice $ head alice_private.pem -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,E26FAC1F143A30632203F09C259200B9 pdKj8Gm5eeAOF0RHzBx8l1tjmA1HSSvy0RF42bOeb7sEVZtJ6pMnrJ26ouwTQnkL JJjUVPPHoKZ7j4QpwzbPGrz/hVeMXVT/y33ZEEA+3nrobwisLKz+Q+C9TVJU3m7M /veiBO9xHMGV01YBNeic7MqXBkhIrNZW6pPRfrbjsBMBGSsL8nwJbb3wvHhzPkeM e+wtt9S5PWhcnGMj3T+2mtFfW6HWpd8Kdp60z7Nh6mhA9+5aDWREfJhJYzl1zfcv Bmxjf2wZ3sFJNty+sQVajYfk6UXMyJIuWgAjnqjw6c3vxQi0KE3NUNZYO93GQgEF pyAnN9uGUTBCDYeTwdw8TEzkyaL08FkzLfFbS2N9BDksA3rpI1cxpxRVFr9+jDBz alice $

要查看密鑰的詳細信息,可以使用以下 OpenSSL 命令打開 .pem 文件并顯示內容。你可能想知道在哪里可以找到另一個配對的密鑰,因為這是單個文件。你觀察的很細致,獲取公鑰的方法如下:

alice $ openssl rsa -in alice_private.pem -noout -text Enter pass phrase for alice_private.pem: RSA Private-Key: (1024 bit, 2 primes) modulus:     00:bd:e8:61:72:f8:f6:c8:f2:cc:05:fa:07:aa:99:     47:a6:d8:06:cf:09:bf:d1:66:b7:f9:37:29:5d:dc:     c7:11:56:59:d7:83:b4:81:f6:cf:e2:5f:16:0d:47:     81:fe:62:9a:63:c5:20:df:ee:d3:95:73:dc:0a:3f:     65:d3:36:1d:c1:7d:8b:7d:0f:79:de:80:fc:d2:c0:     e4:27:fc:e9:66:2d:e2:7e:fc:e6:73:d1:c9:28:6b:     6a:8a:e8:96:9d:65:a0:8a:46:e0:b8:1f:b0:48:d4:     db:d4:a3:7f:0d:53:36:9a:7d:2e:e7:d8:f2:16:d3:     ff:1b:12:af:53:22:c0:41:51 publicExponent: 65537 (0x10001) << 截斷 >> exponent2:     6e:aa:8c:6e:37:d0:57:37:13:c0:08:7e:75:43:96:     33:01:99:25:24:75:9c:0b:45:3c:a2:39:44:69:84:     a4:64:48:f4:5c:bc:40:40:bf:84:b8:f8:0f:1d:7b:     96:7e:16:00:eb:49:da:6b:20:65:fc:a9:20:d9:98:     76:ca:59:e1 coefficient:     68:9e:2e:fa:a3:a4:72:1d:2b:60:61:11:b1:8b:30:     6e:7e:2d:f9:79:79:f2:27:ab:a0:a0:b6:45:08:df:     12:f7:a4:3b:d9:df:c5:6e:c7:e8:81:29:07:cd:7e:     47:99:5d:33:8c:b7:fb:3b:a9:bb:52:c0:47:7a:1c:     e3:64:90:26 alice $

步驟 2:提取公鑰

注意,公鑰是你可以與他人自由共享的密鑰,而你必須將私鑰保密。因此,Alice 必須提取她的公鑰,并將其保存到文件中:

alice $ openssl rsa -in alice_private.pem -pubout > alice_public.pem Enter pass phrase for alice_private.pem: writing RSA key alice $ alice $ ls -l *.pem -rw-------. 1 alice alice 966 Mar 22 17:44 alice_private.pem -rw-rw-r--. 1 alice alice 272 Mar 22 17:47 alice_public.pem alice $

你可以使用與之前相同的方式查看公鑰詳細信息,但是這次,輸入公鑰 .pem 文件:

alice $ alice $ openssl rsa -in alice_public.pem -pubin -text -noout RSA Public-Key: (1024 bit) Modulus:     00:bd:e8:61:72:f8:f6:c8:f2:cc:05:fa:07:aa:99:     47:a6:d8:06:cf:09:bf:d1:66:b7:f9:37:29:5d:dc:     c7:11:56:59:d7:83:b4:81:f6:cf:e2:5f:16:0d:47:     81:fe:62:9a:63:c5:20:df:ee:d3:95:73:dc:0a:3f: $

Bob 可以按照相同的過程來提取他的公鑰并將其保存到文件中:

bob $ openssl rsa -in bob_private.pem -pubout > bob_public.pem Enter pass phrase for bob_private.pem: writing RSA key bob $ bob $ ls -l *.pem -rw-------. 1 bob bob 986 Mar 22 13:48 bob_private.pem -rw-r--r--. 1 bob bob 272 Mar 22 13:51 bob_public.pem bob $

步驟 3:交換公鑰

這些公鑰在 Alice 和 Bob 彼此交換之前沒有太大用處。有幾種共享公鑰的方法,例如使用 scp 命令將密鑰復制到彼此的工作站。

將 Alice 的公鑰發送到 Bob 的工作站:

alice $ scp alice_public.pem bob@bob-machine-or-ip:/path/

將 Bob 的公鑰發送到 Alice 的工作站:

bob $ scp bob_public.pem alice@alice-machine-or-ip:/path/

現在,Alice 有了 Bob 的公鑰,反之亦然:

alice $ ls -l bob_public.pem -rw-r--r--. 1 alice alice 272 Mar 22 17:51 bob_public.pem alice $
bob $ ls -l alice_public.pem -rw-r--r--. 1 bob bob 272 Mar 22 13:54 alice_public.pem bob $

步驟 4:使用公鑰交換加密的消息

假設 Alice 需要與 Bob 秘密交流。她將秘密信息寫入文件中,并將其保存到 top_secret.txt 中。由于這是一個普通文件,因此任何人都可以打開它并查看其內容,這里并沒有太多保護:

alice $ alice $ echo "vim or emacs ?" > top_secret.txt alice $ alice $ cat top_secret.txt vim or emacs ? alice $

要加密此秘密消息,Alice 需要使用 openssls -encrypt 命令。她需要為該工具提供三個輸入:

  • 秘密消息文件的名稱

  • Bob 的公鑰(文件)

  • 加密后新文件的名稱

alice $ openssl rsautl -encrypt -inkey bob_public.pem -pubin -in top_secret.txt -out top_secret.enc alice $ alice $ ls -l top_secret.* -rw-rw-r--. 1 alice alice 128 Mar 22 17:54 top_secret.enc -rw-rw-r--. 1 alice alice  15 Mar 22 17:53 top_secret.txt alice $ alice $

加密后,原始文件仍然是可見的,而新創建的加密文件在屏幕上看起來像亂碼。這樣,你可以確定秘密消息已被加密:

alice $ cat top_secret.txt vim or emacs ? alice $ alice $ cat top_secret.enc ?s??uM)M&>??N??}dmCy92#1X?q???v???M??@??E?~??1?k~&PU?VhHL?@^P??(??zi?M?4p?e??g+R?1?????s???????q_8?lr????C?I-??alice $ alice $ alice $ alice $ hexdump -C ./top_secret.enc 00000000  9e 73 12 8f e3 75 4d 29  4d 26 3e bf 80 4e a0 c5  |.s...uM)M&>..N..| 00000010  7d 64 6d 43 79 39 32 23  31 58 ce 71 f3 ba 95 a6  |}dmCy92#1X.q....| 00000020  c0 c0 76 17 fb f7 bf 4d  ce fc 40 e6 f4 45 7f db  |..v....M..@..E..| 00000030  7e ae c0 31 f8 6b 10 06  7e 26 50 55 b5 05 56 68  |~..1.k..~&PU..Vh| 00000040  48 4c eb 40 5e 50 fe 19  ea 28 a8 b8 7a 13 69 d7  |HL.@^P...(..z.i.| 00000050  4d b0 34 70 d8 65 d5 07  95 67 2b 52 ea 31 aa d4  |M.4p.e...g+R.1..| 00000060  80 b3 a8 ec a1 73 ed a7  f9 17 c3 13 d4 fa c1 71  |.....s.........q| 00000070  5f 38 b9 6c 07 72 81 a6  fe af 43 a6 49 2d c4 ee  |_8.l.r....C.I-..| 00000080 alice $ alice $ file top_secret.enc top_secret.enc: data alice $

刪除秘密消息的原始文件是安全的,這樣確保任何痕跡都沒有:

alice $ rm -f top_secret.txt

現在,Alice 需要再次使用 scp 命令將此加密文件通過網絡發送給 Bob 的工作站。注意,即使文件被截獲,其內容也會是加密的,因此內容不會被泄露:

alice $  scp top_secret.enc bob@bob-machine-or-ip:/path/

如果 Bob 使用常規方法嘗試打開并查看加密的消息,他將無法看懂該消息:

bob $ ls -l top_secret.enc -rw-r--r--. 1 bob bob 128 Mar 22 13:59 top_secret.enc bob $ bob $ cat top_secret.enc ?s??uM)M&>??N??}dmCy92#1X?q???v???M??@??E?~??1?k~&PU?VhHL?@^P??(??zi?M?4p?e??g+R?1?????s???????q_8?lr????C?I-??bob $ bob $ bob $ hexdump -C top_secret.enc 00000000  9e 73 12 8f e3 75 4d 29  4d 26 3e bf 80 4e a0 c5  |.s...uM)M&>..N..| 00000010  7d 64 6d 43 79 39 32 23  31 58 ce 71 f3 ba 95 a6  |}dmCy92#1X.q....| 00000020  c0 c0 76 17 fb f7 bf 4d  ce fc 40 e6 f4 45 7f db  |..v....M..@..E..| 00000030  7e ae c0 31 f8 6b 10 06  7e 26 50 55 b5 05 56 68  |~..1.k..~&PU..Vh| 00000040  48 4c eb 40 5e 50 fe 19  ea 28 a8 b8 7a 13 69 d7  |HL.@^P...(..z.i.| 00000050  4d b0 34 70 d8 65 d5 07  95 67 2b 52 ea 31 aa d4  |M.4p.e...g+R.1..| 00000060  80 b3 a8 ec a1 73 ed a7  f9 17 c3 13 d4 fa c1 71  |.....s.........q| 00000070  5f 38 b9 6c 07 72 81 a6  fe af 43 a6 49 2d c4 ee  |_8.l.r....C.I-..| 00000080 bob $

步驟 5:使用私鑰解密文件

Bob 需要使用 OpenSSL 來解密消息,但是這次使用的是 -decrypt 命令行參數。他需要向工具程序提供以下信息:

  • 加密的文件(從 Alice 那里得到)

  • Bob 的私鑰(用于解密,因為文件是用 Bob 的公鑰加密的)

  • 通過重定向保存解密輸出的文件名

bob $ openssl rsautl -decrypt -inkey bob_private.pem -in top_secret.enc > top_secret.txt Enter pass phrase for bob_private.pem: bob $

現在,Bob 可以閱讀 Alice 發送給他的秘密消息:

bob $ ls -l top_secret.txt -rw-r--r--. 1 bob bob 15 Mar 22 14:02 top_secret.txt bob $ bob $ cat top_secret.txt vim or emacs ? bob $

Bob 需要回復 Alice,因此他將秘密回復寫在一個文件中:

bob $ echo "nano for life" > reply_secret.txt bob $ bob $ cat reply_secret.txt nano for life bob $

步驟 6:使用其他密鑰重復該過程

為了發送消息,Bob 采用和 Alice 相同的步驟,但是由于該消息是發送給 Alice 的,因此他需要使用 Alice 的公鑰來加密文件:

bob $ openssl rsautl -encrypt -inkey alice_public.pem -pubin -in reply_secret.txt -out reply_secret.enc bob $ bob $ ls -l reply_secret.enc -rw-r--r--. 1 bob bob 128 Mar 22 14:03 reply_secret.enc bob $ bob $ cat reply_secret.enc ?F???.4"f?1??\??{o?$?M??I{5?|?\?l??e??Y?V??{?|!$c^a                                                  ?*?\vQ??9????'???sP??'??Z?1W?n??k???J?0?I;P8??????&:bob $ bob $ bob $ hexdump -C ./reply_secret.enc 00000000  92 46 dd 87 04 bc a7 2e  34 22 01 66 1a 13 31 db  |.F......4".f..1.| 00000010  c4 5c b4 8e 7b 6f d4 b0  24 d2 4d 92 9b 49 7b 35  |.\..{o..$.M..I{5| 00000020  da 7c ee 5c bb 6c cd 82  f1 1b 92 65 f1 8d f2 59  |.|.\.l.....e...Y| 00000030  82 56 81 80 7b 89 07 7c  21 24 63 5e 61 0c ae 2a  |.V..{..|!$c^a..*| 00000040  d4 aa 5c 76 51 8d cf a0  39 04 c1 d7 dc f0 ad 99  |..\vQ...9.......| 00000050  27 ed 8e de d9 ae 02 73  50 e0 dd 27 13 ae 8e 5a  |'......sP..'...Z| 00000060  12 e4 9a 31 57 b3 03 6e  dd e1 16 7f 6b c0 b3 8b  |...1W..n....k...| 00000070  4a cf 30 b8 49 3b 50 38  e0 9f 84 f6 83 da 26 3a  |J.0.I;P8......&:| 00000080 bob $ bob $ # remove clear text secret message file bob $ rm -f reply_secret.txt

Bob 通過 scp 將加密的文件發送至 Alice 的工作站:

$ scp reply_secret.enc alice@alice-machine-or-ip:/path/

如果 Alice 嘗試使用常規工具去閱讀加密的文本,她將無法理解加密的文本:

alice $ alice $ ls -l reply_secret.enc -rw-r--r--. 1 alice alice 128 Mar 22 18:01 reply_secret.enc alice $ alice $ cat reply_secret.enc ?F???.4"f?1??\??{o?$?M??I{5?|?\?l??e??Y?V??{?|!$c^a                                                  ?*?\vQ??9????'???sP??'??Z?1W?n??k???J?0?I;P8??????&:alice $ alice $ alice $ alice $ hexdump -C ./reply_secret.enc 00000000  92 46 dd 87 04 bc a7 2e  34 22 01 66 1a 13 31 db  |.F......4".f..1.| 00000010  c4 5c b4 8e 7b 6f d4 b0  24 d2 4d 92 9b 49 7b 35  |.\..{o..$.M..I{5| 00000020  da 7c ee 5c bb 6c cd 82  f1 1b 92 65 f1 8d f2 59  |.|.\.l.....e...Y| 00000030  82 56 81 80 7b 89 07 7c  21 24 63 5e 61 0c ae 2a  |.V..{..|!$c^a..*| 00000040  d4 aa 5c 76 51 8d cf a0  39 04 c1 d7 dc f0 ad 99  |..\vQ...9.......| 00000050  27 ed 8e de d9 ae 02 73  50 e0 dd 27 13 ae 8e 5a  |'......sP..'...Z| 00000060  12 e4 9a 31 57 b3 03 6e  dd e1 16 7f 6b c0 b3 8b  |...1W..n....k...| 00000070  4a cf 30 b8 49 3b 50 38  e0 9f 84 f6 83 da 26 3a  |J.0.I;P8......&:| 00000080 alice $

所以,她使用 OpenSSL 解密消息,只不過這次她提供了自己的私鑰并將輸出保存到文件中:

alice $ openssl rsautl -decrypt -inkey alice_private.pem -in reply_secret.enc > reply_secret.txt Enter pass phrase for alice_private.pem: alice $ alice $ ls -l reply_secret.txt -rw-rw-r--. 1 alice alice 14 Mar 22 18:02 reply_secret.txt alice $ alice $ cat reply_secret.txt nano for life alice $

了解 OpenSSL 的更多信息

OpenSSL 在加密界是真正的瑞士軍刀。除了加密文件外,它還可以執行許多任務,你可以通過訪問 OpenSSL 文檔頁面來找到使用它的所有方式,包括手冊的鏈接、 《OpenSSL Cookbook》、常見問題解答等。要了解更多信息,嘗試使用其自帶的各種加密算法,看看它是如何工作的。

感謝各位的閱讀,以上就是“如何使用OpenSSL加密和解密文件”的內容了,經過本文的學習后,相信大家對如何使用OpenSSL加密和解密文件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒲江县| 兰西县| 宁远县| 翼城县| 万荣县| 轮台县| 革吉县| 木里| 武冈市| 肇源县| 海兴县| 衡阳市| 大冶市| 陇西县| 磐安县| 澄迈县| 洪湖市| 中超| 蓝田县| 隆化县| 东海县| 宜宾市| 通化县| 镇雄县| 大足县| 红安县| 宁波市| 庆元县| 乡宁县| 和政县| 海丰县| 上虞市| 涞源县| 贵南县| 石阡县| 漳平市| 新和县| 耒阳市| 旬阳县| 福鼎市| 堆龙德庆县|