Cách mã hóa hoặc giải mã chuỗi base64 trên Linux

Tác giả sysadmin, T.Hai 01, 2024, 01:17:31 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách mã hóa hoặc giải mã chuỗi base64 trên Linux


Hãy cùng giải mã bí ẩn base64 này nhé. Bạn muốn tìm hiểu cách mã hóa và giải mã chuỗi bằng cách sử dụng lược đồ chuyển nhị phân thành văn bản base64? Hướng dẫn này sẽ chỉ cho bạn hai phương pháp mã hóa và giải mã một chuỗi trên Linux bằng lệnh base64 và ngôn ngữ lập trình Python.

1. Base64 được sử dụng ở đâu?

Base64 được sử dụng rộng rãi trong các lĩnh vực khác nhau. Một số lĩnh vực phổ biến nhất bao gồm tệp đính kèm email, phát triển web, kết nối mạng và mã hóa URL.

Một số hệ thống email sử dụng base64 để mã hóa dữ liệu nhị phân như hình ảnh và tài liệu thành định dạng văn bản để chúng có thể được truyền đi một cách an toàn cùng với tin nhắn. Các nhà phát triển web cũng sử dụng base64 để nhúng hình ảnh vào HTML và CSS nhằm giảm số lượng yêu cầu HTTP và cải thiện tốc độ tải trang.

Một cách sử dụng phổ biến khác của mã hóa base64 là trong mã thông báo xác thực. Tên người dùng và mật khẩu đôi khi được che dấu bằng sơ đồ mã hóa này và được thêm vào tiêu đề HTTP hoặc tham số URL. Trong mạng, base64 được sử dụng trong các giao thức sử dụng giao tiếp dựa trên văn bản, chẳng hạn như HTTP và SMTP, để truyền dữ liệu mà không bị hỏng.

Điều bạn nên biết là base64 chỉ là một sơ đồ mã hóa. Dữ liệu được mã hóa có thể được giải mã dễ dàng để lấy lại dữ liệu gốc. Bạn không bao giờ nên sử dụng nó nếu bạn cần mã hóa dữ liệu.

2. Mã hóa chuỗi bằng lệnh base64

Cách cơ bản nhất để mã hóa một chuỗi bằng base64 là xuất chuỗi đó ra thiết bị đầu cuối bằng lệnh echo. Bí quyết là chuyển đầu ra của lệnh echo sang base64, như thế này:

Mã nguồn [Chọn]
echo 'I love Linux' | base64

Do hoạt động mặc định của lệnh echo nên có một ký tự dòng mới ở cuối chuỗi. Nếu bạn muốn bỏ qua điều đó và chỉ sử dụng chuỗi, hãy chạy:

Mã nguồn [Chọn]
echo -n 'I love Linux' | base64

Như bạn có thể nhận thấy, kết quả đầu ra khác với kết quả trước đó. Bạn cũng có thể thực hiện việc này bằng lệnh printf. Lệnh này không tự động thêm ký tự dòng mới vào chuỗi. Định dạng được đưa ra dưới đây:

Mã nguồn [Chọn]
printf 'I love Linux' | base64

Kết quả đầu ra này giống như kết quả trước đó vì lần này không có ký tự dòng mới. Nếu bạn đã quen với chuỗi ở đây trên Linux, bạn cũng có thể sử dụng chúng để gửi đầu ra chuỗi của mình tới lệnh base64 như thế này:

Mã nguồn [Chọn]
base64 <<< 'I love Linux'

Tương tự như lệnh echo, chuỗi ở đây cũng thêm ký tự dòng mới vào cuối chuỗi.

3. Mã hóa tập tin bằng lệnh base64

Để mã hóa tệp bằng base64, bạn có thể chuyển tệp trực tiếp dưới dạng tùy chọn cho lệnh base64.

Để kiểm tra, hãy tạo một tệp mới và thêm một số văn bản vào đó. Nếu bạn đã có một tập tin văn bản, thì hãy sử dụng nó. Tôi đã tạo một tệp có tên base.txt. Để mã hóa nội dung của tệp thành base64, hãy chạy:

Mã nguồn [Chọn]
base64 base.txt

Hãy nhớ thay thế base.txt bằng tên tệp của bạn. Lệnh trên chỉ hiển thị đầu ra trong terminal. Nó không lưu chuỗi được mã hóa ở bất cứ đâu. Tuy nhiên, bạn có thể dễ dàng thực hiện điều đó bằng cách chuyển hướng đầu ra sang một tệp mới. Tôi đã tạo một tệp khác có tên là out.txt. Lần này tôi sẽ lưu kết quả đầu ra vào tập tin trống đó. Đây là lệnh cho điều đó:

Mã nguồn [Chọn]
base64 base.txt > output.txt

Như bạn có thể thấy, thiết bị đầu cuối không hiển thị đầu ra. Lệnh này đã lưu nó vào một tập tin khác.

4. Giải mã chuỗi base64 bằng lệnh base64

Để giải mã chuỗi base64 và biến nó thành chuỗi thông thường, bạn cần sử dụng cờ "-d" với lệnh base64. Hãy xem minh họa sử dụng lệnh echo.

Mã nguồn [Chọn]
echo 'SG93VG9HZWVrCg==' | base64 -d

Nếu bạn muốn sử dụng chuỗi ở đây để giải mã chuỗi base64, thì hãy sử dụng:

Mã nguồn [Chọn]
base64 -d <<< SG93VG9HZWVrCg==

Đôi khi, có thể có các ký tự không phải chữ và số trong một chuỗi. Bạn có thể bỏ qua chúng trong khi giải mã chuỗi bằng cách sử dụng tùy chọn "-i".

5. Sử dụng Python để mã hóa và giải mã chuỗi base64

Nếu bạn là lập trình viên Python hoặc quen thuộc với ngôn ngữ lập trình Python hơn Bash thì phương pháp này sẽ phù hợp với bạn hơn. Python có mô-đun base64 mà bạn có thể sử dụng để mã hóa và giải mã chuỗi. Bạn có thể sử dụng lệnh terminal python3 hoặc viết một chương trình đầy đủ. Tôi sẽ chỉ cho bạn cả hai cách.

Lệnh python3 có cờ "-m" hoặc mô-đun. Bạn có thể sử dụng cờ này để gọi mô-đun base64. Sau đó, bạn có thể truyền chuỗi của mình với sự trợ giúp của lệnh echo hoặc here-strings. Đây là lệnh đầy đủ:

Mã nguồn [Chọn]
echo 'I love Linux' | python3 -m base64 # Using the echo commandpython3 -m base64 <<< 'I love Linux' # Using here-strings

Để giải mã chuỗi base64, tất cả những gì bạn cần làm là sử dụng cờ "-d" như đã thấy trước đó với lệnh base64. Cú pháp dưới đây:

Mã nguồn [Chọn]
echo 'SSBsb3ZlIExpbnV4Cg==' | python3 -m base64 -d # Using the echo commandpython3 -m base64 -d <<< 'SSBsb3ZlIExpbnV4Cg==' # Using here-strings

Tất nhiên, cách thuận tiện nhất là tạo một chương trình Python có thể xử lý việc mã hóa và giải mã bằng cách lấy dữ liệu đầu vào của người dùng. Đầu tiên, hãy tạo một chương trình mã hóa một chuỗi. Đây là mã mã hóa:

Mã nguồn [Chọn]
import base64
# Get input string from the user
input_string = input("Enter the string to encode: ")
# Encode the string using base64
encoded_string = base64.b64encode(input_string.encode('utf-8'))
# Decode the encoded string to ensure it's correct (optional)
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
# Print the encoded and decoded strings
print("Encoded string:", encoded_string.decode('utf-8'))
print("Decoded string (verification):", decoded_string)

Lưu tệp với tên phù hợp và phần mở rộng ".py". Tôi đang lưu nó bằng tên base64_encoding.py. Sau khi hoàn tất, hãy chạy chương trình với:

Mã nguồn [Chọn]
python3 base64_encoding.py

Bạn cũng có thể tạo chương trình để giải mã chuỗi base64. Đây là đoạn mã bạn có thể sử dụng:

Mã nguồn [Chọn]
import base64
# Get input base64 string from the user
encoded_string = input("Enter the Base64 string to decode: ")
try:
   # Decode the string using base64.b64decode()
   decoded_string = base64.b64decode(encoded_string).decode('utf-8')
   print("Decoded string:", decoded_string)
except Exception as e:
   print(f"Error decoding string: {e}")

Lưu tệp và chạy chương trình theo cách tương tự.

Mã nguồn [Chọn]
python3 base64_decoding.py

Bây giờ bạn có thể sử dụng các chương trình Python này để mã hóa và giải mã bất kỳ chuỗi nào.

Vì vậy, đây là hai trong số những cách dễ nhất để mã hóa và giải mã chuỗi bằng base64. Nếu bạn muốn tìm hiểu thêm về lệnh base64 trên Linux, tốt hơn hết bạn nên xem trang hướng dẫn của nó.