Các mã hóa base64, base32 và base16 chuyển đổi các byte 8 bit thành các giá trị có 6, 5 hoặc 4 bit dữ liệu hữu ích trên mỗi byte, cho phép các byte không phải ASCII được mã hóa thành các ký tự ASCII để truyền qua các giao thức yêu cầu ASCII đơn giản, chẳng hạn như . Các giá trị cơ sở tương ứng với độ dài của bảng chữ cái được sử dụng trong mỗi mã hóa. Ngoài ra còn có các biến thể an toàn cho URL của mã hóa ban đầu sử dụng các kết quả hơi khác nhau
Mã hóa cơ sở 64
Một ví dụ cơ bản về mã hóa một số văn bản trông như thế này
import base64 # Load this source file and strip the header. initial_data = open[__file__, 'rt'].read[].split['#end_pymotw_header'][1] encoded_data = base64.b64encode[initial_data] num_initial = len[initial_data] padding = { 0:0, 1:2, 2:1 }[num_initial % 3] print '%d bytes before encoding' % num_initial print 'Expect %d padding bytes' % padding print '%d bytes after encoding' % len[encoded_data] print #print encoded_data for i in xrange[[len[encoded_data]/40]+1]: print encoded_data[i*40:[i+1]*40]
Đầu ra hiển thị 558 byte của nguồn ban đầu mở rộng thành 744 byte sau khi được mã hóa
Ghi chú
Không có dấu xuống dòng trong đầu ra do thư viện tạo ra, vì vậy tôi đã chia nhỏ dữ liệu được mã hóa một cách giả tạo để làm cho nó vừa vặn hơn trên trang
$ python base64_b64encode.py 113 bytes before encoding Expect 1 padding bytes 152 bytes after encoding CgppbXBvcnQgYmFzZTY0CgojIExvYWQgdGhpcyBz b3VyY2UgZmlsZSBhbmQgc3RyaXAgdGhlIGhlYWRl ci4KaW5pdGlhbF9kYXRhID0gb3BlbihfX2ZpbGVf XywgJ3J0JykucmVhZCgpLnNwbGl0KCc=
Giải mã Base64
Chuỗi được mã hóa có thể được chuyển đổi trở lại dạng ban đầu bằng cách lấy 4 byte và chuyển đổi chúng thành 3 ban đầu, sử dụng tra cứu ngược. Hàm b64decode[] thực hiện điều đó cho bạn
import base64 original_string = 'This is the data, in the clear.' print 'Original:', original_string encoded_string = base64.b64encode[original_string] print 'Encoded :', encoded_string decoded_string = base64.b64decode[encoded_string] print 'Decoded :', decoded_string
Quá trình mã hóa xem xét từng chuỗi 24 bit ở đầu vào [3 byte] và mã hóa 24 bit đó trải rộng trên 4 byte ở đầu ra. Hai ký tự cuối cùng, ==, là phần đệm vì số bit trong chuỗi gốc không chia hết cho 24 trong ví dụ này
$ python base64_b64decode.py Original: This is the data, in the clear. Encoded : VGhpcyBpcyB0aGUgZGF0YSwgaW4gdGhlIGNsZWFyLg== Decoded : This is the data, in the clear.
Các biến thể an toàn cho URL
Vì bảng chữ cái base64 mặc định có thể sử dụng + và / và hai ký tự đó được sử dụng trong URL, nên cần chỉ định mã hóa thay thế với các ký tự thay thế cho các ký tự đó. Dấu + được thay thế bằng dấu - và / được thay thế bằng dấu gạch dưới [_]. Mặt khác, bảng chữ cái là như nhau
import base64 for original in [ chr[251] + chr[239], chr[255] * 2 ]: print 'Original :', repr[original] print 'Standard encoding:', base64.standard_b64encode[original] print 'URL-safe encoding:', base64.urlsafe_b64encode[original] print
$ python base64_urlsafe.py Original : '\xfb\xef' Standard encoding: ++8= URL-safe encoding: --8= Original : '\xff\xff' Standard encoding: //8= URL-safe encoding: __8=
Mã hóa khác
Ngoài cơ sở 64, mô-đun cung cấp các chức năng để làm việc với dữ liệu được mã hóa cơ sở 32 và cơ sở 16 [hex]
Mã hóa Base64 cho phép chúng tôi chuyển đổi byte chứa dữ liệu nhị phân hoặc văn bản thành ký tự ASCII. Bằng cách mã hóa dữ liệu, chúng tôi cải thiện khả năng dữ liệu được các hệ thống khác nhau xử lý chính xác. Thật không may, một số hệ thống không hiểu dữ liệu ở định dạng byte, vì vậy chúng tôi phải chuyển đổi dữ liệuMục đích của base64. b64encode[] trong Python là chuyển đổi dữ liệu nhị phân thành “văn bản” an toàn ASCII. Nhưng Python hoàn toàn không đồng ý với điều đó. Python hiện rất nghiêm ngặt về vấn đề này. phương thức encode[] thậm chí không tồn tại, và do đó, 'xyz'. encode['base64'] sẽ tăng AttributeError.
Bây giờ, hãy hiểu mã hóa base64
Mã hóa Base64 là gì?
Mã hóa Base64 là kiểu chuyển đổi byte thành ký tự ASCII. Ví dụ, trong toán học, cơ sở của một hệ thống số cho biết có bao nhiêu ký tự khác nhau đại diện cho các số
Tên của mã hóa base64 xuất phát trực tiếp từ mộ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 các số
Bộ ký tự Base64 chứa các thông tin sau
- 26 chữ hoa
- 26 chữ thường
- 10 số
- + và / cho các dòng mới
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
Python thành chuỗi base64
Để chuyển đổi Hình ảnh thành Chuỗi Base64 trong Python, hãy sử dụng mô-đun Python base64 cung cấp phương thức b64encode[]. Python base64. hàm b64encode[] mã hóa một chuỗi bằng Base64 và trả về chuỗi đó.
cú pháp
base64.b64encode[s[, altchars]]
Thông số
Hàm lấy s làm đầu vào và là tham số bắt buộc
Các altchars tùy chọn phải là một chuỗi có độ dài ít nhất là 2 [các ký tự bổ sung được bỏ qua], xác định bảng chữ cái thay thế cho các ký tự + và /
Điều này cho phép một ứng dụng, ví dụ, tạo các chuỗi Base64 an toàn cho URL hoặc hệ thống tệp. Giá trị mặc định là Không, bảng chữ cái Base64 tiêu chuẩn được sử dụng
Giá trị trả về
Hàm b64encode[] trả về chuỗi được mã hóa
Ví dụ về chuyển đổi Image thành base64 trong Python
import base64 with open["grayimage.png", "rb"] as img_file: b64_string = base64.b64encode[img_file.read[]] print[b64_string]
Trong thư mục dự án của tôi, tôi có một hình ảnh được gọi là hình ảnh màu xám. png. Vui lòng đảm bảo rằng đường dẫn hình ảnh của bạn là chính xác
Trong ví dụ này, trước tiên chúng tôi mở tệp ở chế độ 'rb'. Sau đó, chúng tôi đọc các tập tin hình ảnh
Python với hàm open[] mở một tệp và sau đó chúng ta có thể thực hiện bất kỳ thao tác nào chúng ta muốn. Nó tự động đóng tệp khi chúng tôi không cần nó nữa
Sau đó mã hóa nó bằng phương thức b64encode[]. Bạn phải đọc tệp hình ảnh trước khi mã hóa nó.
Tôi nhận được chuỗi dài ở đầu ra trong thiết bị đầu cuối, như sau
________số 8Chuỗi của bạn đã được in. Nhưng ở vị trí bắt đầu của chuỗi base64 của bạn, có một b'
Hoặc bạn có thể nói chuỗi được mã hóa base64 của bạn nằm trong cặp trích dẫn đơn
Để xóa b’ khỏi tiền tố của mã base64 trong Python, bạn có thể sử dụng chuỗi. phương thức mã hóa ['utf-8']
import base64 with open["grayimage.png", "rb"] as img_file: b64_string = base64.b64encode[img_file.read[]] print[b64_string.decode['utf-8']]
Đó là nó
Xem thêm
Hình ảnh Python PIL sang thang độ xám
Hình ảnh Python PIL thành mảng Numpy
Cách cắt ảnh trong Python
Cách thay đổi kích thước hình ảnh trong Python
Bài viết trước Python cv2 đã đọc. Cách đọc hình ảnh trong Python
Bài viết tiếp theo Cách chuyển đổi hình ảnh PIL thành mảng Numpy trong Python
kranal
https. //appdividend. com/
Krunal Lathiya là Kỹ sư phần mềm với hơn tám năm kinh nghiệm. Anh ấy đã phát triển một nền tảng vững chắc về các nguyên tắc khoa học máy tính và niềm đam mê giải quyết vấn đề. Ngoài ra, Krunal có kiến thức tuyệt vời về Khoa học dữ liệu và Học máy, đồng thời là chuyên gia về Ngôn ngữ Python. Krunal có kinh nghiệm với nhiều ngôn ngữ lập trình và công nghệ khác nhau, bao gồm PHP, R, Golang và JavaScript. Anh ấy cảm thấy thoải mái khi làm việc trong lĩnh vực phát triển front-end và back-end