Hướng dẫn convert base64 to string python - chuyển đổi base64 thành chuỗi python

Một chuỗi đã được 'được giải mã', do đó lớp str không có hàm 'giải mã'. Vì vậy,:

AttributeError: type object 'str' has no attribute 'decode'

Nếu bạn muốn giải mã một mảng byte và biến nó thành một cuộc gọi chuỗi:

the_thing.decode(encoding)

Nếu bạn muốn mã hóa một chuỗi (biến nó thành một mảng byte) cuộc gọi:

the_string.encode(encoding)

Về mặt cơ sở 64, sử dụng 'base64' làm giá trị để mã hóa ở trên mang lại lỗi:

LookupError: unknown encoding: base64

Mở bảng điều khiển và nhập các mục sau:

import base64
help(base64)

Bạn sẽ thấy rằng Base64 có hai chức năng rất tiện dụng, cụ thể là B64Decode và B64encode. Giải mã B64 Trả về một mảng byte và B64encode yêu cầu một mảng byte.

Để chuyển đổi một chuỗi thành biểu diễn Base64 của nó, trước tiên bạn cần chuyển đổi nó thành byte. Tôi thích UTF-8 nhưng sử dụng bất kỳ mã hóa nào bạn cần ...

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')

Giới thiệu

Bạn đã bao giờ nhận được một tệp PDF hoặc một tệp hình ảnh từ ai đó qua email, chỉ để xem các ký tự lạ khi bạn mở nó? Điều này có thể xảy ra nếu máy chủ email của bạn chỉ được thiết kế để xử lý dữ liệu văn bản. Các tệp có dữ liệu nhị phân, byte đại diện cho thông tin không phải là hình ảnh như hình ảnh, có thể dễ dàng bị hỏng khi được chuyển và xử lý sang các hệ thống chỉ có văn bản.

Mã hóa Base64 cho phép chúng tôi chuyển đổi các byte chứa dữ liệu nhị phân hoặc văn bản sang các ký tự ASCII. Bằng cách mã hóa dữ liệu của chúng tôi, chúng tôi cải thiện cơ hội được xử lý chính xác bởi các hệ thống khác nhau.

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu cách mã hóa và giải mã Base64 và cách sử dụng nó. Sau đó, chúng tôi sẽ sử dụng mã hóa Python đến Base64 và giải mã cả dữ liệu văn bản và dữ liệu nhị phân.

Base64 mã hóa là gì?

Mã hóa Base64 là một loại chuyển đổi byte thành các ký tự ASCII. Trong toán học, cơ sở của một hệ thống số đề cập đến số lượng ký tự khác nhau đại diện cho số. Tên của mã hóa này xuất phát trực tiếp từ định nghĩa toán học của các cơ sở - chúng tôi có 64 ký tự đại diện cho số.

Bộ ký tự Base64 chứa:

  • 26 chữ hoa
  • 26 chữ cái chữ thường
  • 10 số
  • the_thing.decode(encoding)
    
    7 và
    the_thing.decode(encoding)
    
    8 cho các dòng mới (một số triển khai có thể sử dụng các ký tự khác nhau)

Khi máy tính chuyển đổi các ký tự base64 thành nhị phân, mỗi ký tự base64 đại diện cho 6 bit thông tin.

Lưu ý: Đây không phải là thuật toán mã hóa và không nên được sử dụng cho mục đích bảo mật. This is not an encryption algorithm, and should not be used for security purposes.

Bây giờ chúng ta đã biết mã hóa Base64 nào và cách nó được thể hiện trên máy tính, chúng ta hãy nhìn sâu hơn về cách thức hoạt động của nó.

Mã hóa Base64 hoạt động như thế nào?

Chúng tôi sẽ minh họa cách mã hóa Base64 hoạt động bằng cách chuyển đổi dữ liệu văn bản, vì nó tiêu chuẩn hơn so với các định dạng nhị phân khác nhau để lựa chọn. Nếu chúng tôi đã mã hóa Base64, chúng tôi sẽ làm theo các bước sau:

  1. Lấy giá trị ASCII của mỗi ký tự trong chuỗi
  2. Tính toán nhị phân 8 bit tương đương với các giá trị ASCII
  3. Chuyển đổi các khối 8 bit thành các khối 6 bit bằng cách chỉ nhóm lại các chữ số
  4. Chuyển đổi các nhóm nhị phân 6 bit thành các giá trị thập phân tương ứng của chúng.
  5. Sử dụng bảng mã hóa Base64, gán ký tự base64 tương ứng cho mỗi giá trị thập phân.

Hãy xem cách nó hoạt động bằng cách chuyển đổi chuỗi "Python" thành chuỗi base64.

Các giá trị ASCII của các ký tự

the_thing.decode(encoding)
9 lần lượt là
the_string.encode(encoding)
0. Chúng ta có thể biểu diễn các giá trị ASCII này trong nhị phân 8 bit như sau:

01010000 01111001 01110100 01101000 01101111 01101110

Hãy nhớ lại rằng các ký tự Base64 chỉ đại diện cho 6 bit dữ liệu. Bây giờ chúng tôi nhóm lại các chuỗi nhị phân 8 bit thành các khối 6 bit. Các nhị phân kết quả sẽ trông như thế này:

010100 000111 100101 110100 011010 000110 111101 101110

Lưu ý: Đôi khi chúng tôi không thể nhóm dữ liệu thành các chuỗi 6 bit. Nếu điều đó xảy ra, chúng ta phải đệm trình tự. Sometimes we are not able to group the data into sequences of 6 bits. If that occurs, we have to pad the sequence.

Với dữ liệu của chúng tôi trong các nhóm 6 bit, chúng tôi có thể thu được giá trị thập phân cho mỗi nhóm. Sử dụng kết quả cuối cùng của chúng tôi, chúng tôi nhận được các giá trị thập phân sau:

20 7 37 52 26 6 61 46

Cuối cùng, chúng tôi sẽ chuyển đổi các số thập phân này thành ký tự base64 thích hợp bằng cách sử dụng bảng chuyển đổi Base64:

Như bạn có thể thấy, giá trị

the_string.encode(encoding)
1 tương ứng với chữ cái
the_string.encode(encoding)
2. Sau đó, chúng tôi nhìn vào
the_string.encode(encoding)
3 và quan sát nó được ánh xạ tới
the_string.encode(encoding)
4. Tiếp tục tra cứu này cho tất cả các giá trị thập phân, chúng ta có thể xác định rằng "python" được biểu diễn dưới dạng
the_string.encode(encoding)
5 khi base64 được mã hóa. Bạn có thể xác minh kết quả này với một bộ chuyển đổi trực tuyến.

Để base64 mã hóa một chuỗi, chúng tôi chuyển đổi nó thành các chuỗi nhị phân, sau đó thành các chuỗi thập phân và cuối cùng, sử dụng bảng tra cứu để có được một chuỗi các ký tự ASCII. Với sự hiểu biết sâu sắc hơn về cách thức hoạt động của nó, chúng ta hãy xem tại sao chúng ta sẽ mã hóa dữ liệu của chúng ta.

Tại sao sử dụng mã hóa Base64?

Trong máy tính, tất cả dữ liệu của các loại khác nhau được truyền là 1 và 0. Tuy nhiên, một số kênh truyền thông và ứng dụng không thể hiểu tất cả các bit mà nó nhận được. Điều này là do ý nghĩa của chuỗi 1 và 0 phụ thuộc vào loại dữ liệu mà nó đại diện. Ví dụ,

the_string.encode(encoding)
6 phải được xử lý khác nhau nếu nó đại diện cho một chữ cái hoặc một hình ảnh.

Để làm việc xung quanh giới hạn này, bạn có thể mã hóa dữ liệu của mình thành văn bản, cải thiện cơ hội của nó được truyền và xử lý chính xác. Base64 là một phương pháp phổ biến để đưa dữ liệu nhị phân vào các ký tự ASCII, được đa số các mạng và ứng dụng được hiểu rộng rãi.

Một kịch bản trong thế giới thực phổ biến trong đó mã hóa Base64 được sử dụng rất nhiều trong các máy chủ thư. Chúng ban đầu được xây dựng để xử lý dữ liệu văn bản, nhưng chúng tôi cũng hy vọng chúng sẽ gửi hình ảnh và phương tiện khác với một thông báo. Trong những trường hợp đó, dữ liệu phương tiện của bạn sẽ được mã hóa base64 khi nó được gửi. Sau đó, nó sẽ được giải mã Base64 khi nhận được để một ứng dụng có thể sử dụng nó. Vì vậy, ví dụ, hình ảnh trong HTML có thể trông như thế này:

<img src="data:image/png;base64,aVRBOw0AKg1mL9...">

Hiểu rằng dữ liệu đôi khi cần được gửi dưới dạng văn bản để nó không bị hỏng, chúng ta hãy xem cách chúng ta có thể sử dụng dữ liệu được mã hóa và giải mã Python to Base64.

Chuỗi mã hóa với Python

Python 3 cung cấp một mô -đun

the_string.encode(encoding)
7 cho phép chúng tôi dễ dàng mã hóa và giải mã thông tin. Trước tiên chúng tôi chuyển đổi chuỗi thành một đối tượng giống như byte. Sau khi chuyển đổi, chúng ta có thể sử dụng mô -đun
the_string.encode(encoding)
7 để mã hóa nó.

Trong một tệp mới

the_string.encode(encoding)
9, nhập như sau:

the_thing.decode(encoding)
0

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

Trong mã trên, trước tiên chúng tôi nhập mô -đun

the_string.encode(encoding)
7. Biến
LookupError: unknown encoding: base64
1 lưu trữ chuỗi đầu vào của chúng tôi sẽ được mã hóa. Chúng tôi chuyển đổi nó thành một đối tượng giống như byte bằng phương thức
LookupError: unknown encoding: base64
2 của chuỗi và lưu trữ nó trong
LookupError: unknown encoding: base64
3. Sau đó, chúng tôi mã hóa Base64
LookupError: unknown encoding: base64
3 và lưu trữ kết quả trong
LookupError: unknown encoding: base64
5 bằng phương pháp
LookupError: unknown encoding: base64
6. Cuối cùng chúng tôi nhận được biểu diễn chuỗi của chuyển đổi Base64 bằng cách giải mã
LookupError: unknown encoding: base64
5 là ASCII.

Lưu ý: Hãy chắc chắn sử dụng cùng một định dạng mã hóa thành khi chuyển đổi từ chuỗi sang byte và từ byte sang chuỗi. Điều này ngăn chặn tham nhũng dữ liệu. Be sure to use the same encoding format to when converting from string to bytes, and from bytes to string. This prevents data corruption.

Chạy tệp này sẽ cung cấp đầu ra sau:

the_thing.decode(encoding)
1

Bây giờ chúng ta hãy xem làm thế nào chúng ta có thể giải mã một chuỗi base64 thành biểu diễn thô của nó.

Chuỗi giải mã với Python

Giải mã một chuỗi base64 về cơ bản là một mặt trái của quá trình mã hóa. Chúng tôi giải mã chuỗi base64 thành byte dữ liệu không được mã hóa. Sau đó chúng tôi chuyển đổi đối tượng giống như byte thành một chuỗi.

Trong một tệp mới có tên

LookupError: unknown encoding: base64
8, hãy viết mã sau:

the_thing.decode(encoding)
2

Một lần nữa, chúng tôi cần mô -đun

the_string.encode(encoding)
7 được nhập. Sau đó, chúng tôi mã hóa thông điệp của chúng tôi thành một đối tượng giống như byte với
import base64
help(base64)
0. Chúng tôi tiếp tục bằng cách gọi phương thức
import base64
help(base64)
1 để giải mã
LookupError: unknown encoding: base64
5 vào biến
LookupError: unknown encoding: base64
3 của chúng tôi. Cuối cùng, chúng tôi giải mã
LookupError: unknown encoding: base64
3 thành một đối tượng chuỗi
LookupError: unknown encoding: base64
1, do đó nó trở nên dễ đọc.

Chạy tệp này để xem đầu ra sau:

the_thing.decode(encoding)
3

Bây giờ chúng ta có thể mã hóa và giải mã dữ liệu chuỗi, chúng ta hãy cố gắng mã hóa dữ liệu nhị phân.

Mã hóa dữ liệu nhị phân với Python

Như chúng tôi đã đề cập trước đây, mã hóa Base64 chủ yếu được sử dụng để biểu diễn dữ liệu nhị phân làm văn bản. Trong Python, chúng ta cần đọc tệp nhị phân và base64 mã hóa byte của nó để chúng ta có thể tạo chuỗi được mã hóa của nó.

Hãy xem cách chúng ta có thể mã hóa hình ảnh này:

Tạo một tệp mới

import base64
help(base64)
6 và thêm thông tin sau:

the_thing.decode(encoding)
4

Chúng ta hãy đi qua đoạn mã ở trên. Chúng tôi mở tệp bằng

import base64
help(base64)
7. Lưu ý cách chúng tôi vượt qua đối số
import base64
help(base64)
8 cùng với đường dẫn tệp - điều này cho Python biết rằng chúng tôi đang đọc một tệp nhị phân. Không cần sử dụng
import base64
help(base64)
8, Python sẽ cho rằng chúng tôi đang đọc một tệp văn bản.

Sau đó, chúng tôi sử dụng phương thức

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
0 để lấy tất cả dữ liệu trong tệp vào biến
import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
1. Tương tự như cách chúng tôi xử lý các chuỗi, chúng tôi đã mã hóa các byte với
LookupError: unknown encoding: base64
6 và sau đó sử dụng
import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
3 trên
import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
4 để lấy dữ liệu được mã hóa base64 bằng các ký tự có thể đọc được của con người.

Thực hiện mã sẽ tạo ra đầu ra tương tự như:

the_thing.decode(encoding)
5

Đầu ra của bạn có thể thay đổi tùy thuộc vào hình ảnh bạn đã chọn để mã hóa.

Bây giờ chúng ta đã biết cách BAS64 mã hóa dữ liệu nhị phân trong Python, chúng ta hãy di chuyển trên base64 giải mã dữ liệu nhị phân.

Giải mã dữ liệu nhị phân với Python

Base64 Decoding nhị phân tương tự như dữ liệu văn bản giải mã Base64. Sự khác biệt chính là sau khi chúng tôi giải mã chuỗi, chúng tôi lưu dữ liệu dưới dạng tệp nhị phân thay vì một chuỗi.

Hãy xem cách giải mã Base64 trong thực tế bằng cách tạo một tệp mới có tên

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
5. Nhập mã sau vào tệp Python:

the_thing.decode(encoding)
6

Trong mã trên, trước tiên chúng tôi chuyển đổi dữ liệu chuỗi Base64 của chúng tôi thành một đối tượng giống như byte có thể được giải mã. Khi bạn là Base64 giải mã một tệp nhị phân, bạn phải biết loại dữ liệu đang được giải mã. Ví dụ: dữ liệu này chỉ hợp lệ dưới dạng tệp PNG và không phải là tệp MP3 vì nó mã hóa một hình ảnh.must know the type of data that is being decoded. For example, this data is only valid as a PNG file and not a MP3 file as it encodes an image.

Khi tệp đích được mở, chúng tôi base64 giải mã dữ liệu bằng

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
6, một phương thức khác với
import base64
help(base64)
1 được sử dụng với các chuỗi. Phương pháp này nên được sử dụng để giải mã dữ liệu nhị phân. Cuối cùng, chúng tôi viết dữ liệu được giải mã vào một tệp.

Trong cùng một thư mục mà bạn đã thực thi

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
5, giờ đây bạn sẽ thấy một tệp
import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
9 mới có chứa hình ảnh gốc được mã hóa trước đó.

Sự kết luận

Mã hóa Base64 là một kỹ thuật phổ biến để chuyển đổi dữ liệu ở các định dạng nhị phân khác nhau thành một chuỗi các ký tự ASCII. Điều này rất hữu ích khi truyền dữ liệu đến các mạng hoặc ứng dụng không thể xử lý dữ liệu nhị phân thô nhưng sẽ dễ dàng xử lý văn bản.

Với Python, chúng ta có thể sử dụng mô -đun

the_string.encode(encoding)
7 để mã hóa Base64 và giải mã dữ liệu văn bản và nhị phân.

Những ứng dụng nào bạn sẽ sử dụng để mã hóa và giải mã dữ liệu Base64?

Làm cách nào để giải mã một chuỗi cơ sở 64 trong Python?

Để giải mã một hình ảnh bằng Python, chúng tôi chỉ cần sử dụng hàm base64.b64decode (s).Python đề cập đến những điều sau đây liên quan đến hàm này: Giải mã base64 được mã hóa đối tượng giống như byte hoặc chuỗi ASCII và trả về các byte được giải mã.use the base64. b64decode(s) function. Python mentions the following regarding this function: Decode the Base64 encoded bytes-like object or ASCII string s and return the decoded bytes.

Làm cách nào để nhận được chuỗi được mã hóa base64?

Nếu chúng ta mã hóa Base64, chúng ta sẽ làm theo các bước sau: Lấy giá trị ASCII của mỗi ký tự trong chuỗi.Tính toán nhị phân 8 bit tương đương với các giá trị ASCII.Chuyển đổi các khối 8 bit thành các khối 6 bit bằng cách đơn giản là nhóm lại các chữ số.Take the ASCII value of each character in the string. Calculate the 8-bit binary equivalent of the ASCII values. Convert the 8-bit chunks into chunks of 6 bits by simply re-grouping the digits.

Base64 B64Decode trong Python là gì?

B64Decode () trong Python.Với sự trợ giúp của Base64.Phương thức B64Decode (), chúng ta có thể giải mã chuỗi nhị phân thành dạng bình thường.Trả về: Trả về chuỗi được giải mã.decode the binary string into normal form. Return : Return the decoded string.

Base64 B64encode trong Python là gì?

B64encode () trong Python.Với sự trợ giúp của Base64.Phương thức B64encode (), chúng ta có thể mã hóa chuỗi thành dạng nhị phân.Trả về: Trả về chuỗi được mã hóa.encode the string into the binary form. Return : Return the encoded string.