Điểm:0

Mã hóa bằng ASCII thay vì bit và byte (làm rõ trong nội dung)

lá cờ th

Tôi chưa quen với mật mã và tôi đang cố gắng hiểu điều gì đó. Tôi đã tìm kiếm nó trên internet, mặc dù câu hỏi có lẽ là một câu hỏi đơn giản, không thể tìm thấy câu trả lời. Vì vậy, xin đừng đánh giá tôi bởi điều đó. Đây là câu hỏi của tôi: Không tính đến hiệu quả, tốc độ hoặc tối ưu hóa:

Mọi thứ có thể được mã hóa bằng các phương pháp mã hóa khác (chẳng hạn như sử dụng nhị phân hoặc bit và byte hoặc Unicode) cũng có thể được mã hóa bằng cách sử dụng ASCII không?

Cảm ơn trước những người vui lòng trả lời câu hỏi của tôi.

fgrieu avatar
lá cờ ng
Vui lòng làm rõ hoặc đóng câu hỏi! Đoạn thứ hai có một lỗi ngữ pháp ("Can everything that..is."); có "các phương pháp mã hóa khác" mà không tham chiếu đến mã hóa khác; và sử dụng "được mã hóa bằng cách sử dụng ASCII", khi mã hóa không thực hiện được gì. Có lẽ chúng ta nên đọc: "Có thể thay thế mọi thứ (có thể mã hóa) được mã hóa _into_ ASCII"? Câu trả lời rõ ràng là có, và đó là thông lệ. Một trong những cách tốt nhất được biết đến là mã hóa lại bản mã được tạo bởi một số phương pháp mã hóa công khai thành ASCII, ví dụ: sử dụng [Base64](https://en.wikipedia. org/wiki/Base64).
Fenrir avatar
lá cờ th
Xin chào, tôi thực sự đánh giá cao câu trả lời của bạn. Xin lỗi vì tôi không thể diễn đạt rõ ràng. Tôi đã cố gắng hỏi ""Mọi thứ (có thể được mã hóa) có thể được mã hóa thành ASCII" không? và bạn đã trả lời nó. Ngoài ra, cảm ơn bạn đã cảnh báo tôi trước thay vì báo cáo trực tiếp.
Điểm:0
lá cờ my

Khi một chuỗi như "Xin chào thế giới" được mã hóa, các thuật toán có chuyển đổi chuỗi này thành nhị phân hoặc ASCII không?

Chà, câu trả lời phụ thuộc vào việc bạn đang nói về mật mã lịch sử hay hiện đại.

Trước đây, các phương thức mã hóa thường lấy chuỗi dưới dạng một chuỗi ký tự và biến đổi chúng theo cách đó. Đôi khi, họ thực hiện ánh xạ bên trong, chẳng hạn như "A" -> 0, "B" -> 1, v.v., tuy nhiên, điều đó thường được thực hiện bên trong thuật toán. Nói chung, họ không chuyển đổi các ký tự thành nhị phân (lúc đó sẽ được coi là một lựa chọn kỳ quặc) và chắc chắn không phải là ASCII (lúc đó không tồn tại).

Mặt khác, các thuật toán mã hóa hiện đại nói chung [1] lấy các chuỗi bit hoặc byte làm đầu vào và tạo ra một chuỗi bit hoặc byte làm đầu ra. Để mã hóa một chuỗi, bạn sẽ chuyển đổi nó thành một chuỗi như vậy (cho dù sử dụng ASCII, Unicode hay EBCDIC, thuật toán sẽ không quan tâm) và thuật toán đã hoạt động trên đó.

Ngoài ra, nếu đây là một tệp, ASCII vẫn có thể được sử dụng để mã hóa dữ liệu chứ?

Chà, một tệp gồm các ký tự ASCII có thể được xem dưới dạng một chuỗi byte và vì vậy các thuật toán mã hóa hiện đại sẽ xử lý nó tốt.

[1]: Một ngoại lệ: Các sơ đồ mã hóa bảo toàn định dạng, thường xem đầu vào là cơ sở-$b$ chuỗi, ở đâu $b$ có thể không phải là một sức mạnh của hai.

Fenrir avatar
lá cờ th
Tôi thực sự cảm ơn bạn đã vui lòng trả lời câu hỏi của tôi, nhưng tôi có một câu hỏi nữa muốn hỏi. Nếu chúng ta có thể chuyển đổi thứ gì đó thành một chuỗi byte, thì chúng ta cũng có thể chuyển đổi nó thành ASCII, phải không? Vì vậy, mọi thứ có thể được mã hóa bằng các phương pháp khác cũng có thể được mã hóa bằng cách sử dụng ASCII, phải không? Mặc dù trong trường hợp đó, sẽ là khôn ngoan nếu xem xét tính hiệu quả và tối ưu hóa.
poncho avatar
lá cờ my
ASCII chỉ là một cách chuyển đổi các ký tự (và điều khiển) khác nhau thành các giá trị từ 0 đến 127 (hoặc 0 đến 255 nếu bạn sử dụng "ASCII mở rộng"). Nếu chúng ta giả sử rằng chuỗi mà chúng ta cung cấp cho tiền điện tử là "ASCII mở rộng", thì đúng vậy (giả sử rằng chuỗi đó là bội số của 8 bit - thường là như vậy); tuy nhiên không rõ điều đó mang lại cho chúng ta lợi thế gì.
Điểm:0
lá cờ ng

Mọi thứ (có thể được mã hóa) có thể được mã hóa thành ASCII không?

Đúng. Và đó là thông lệ. Kỹ thuật chung là mã hóa, mà đối với hầu hết các mật mã hiện đại sẽ tạo ra các bit rõ ràng là ngẫu nhiên, có thể được gọi là "nhị phân". Sau đó mã hóa lại thành ASCII, ví dụ: sử dụng cơ sở64. Điều đó được tích hợp trong một số phần mềm mã hóa như PGP/GPG, phần mềm này gọi quá trình tái kết xuất áo giáp ASCII.

Như là mã hóa nhị phân thành văn bản không dành riêng cho mật mã. Nó được sử dụng trong email cho nội dung sử dụng các ký tự không tồn tại trong ASCII và các tệp đính kèm như hình ảnh.

Mã hóa như vậy làm tăng kích thước. Bằng hệ số $2$ đối với hệ thập lục phân (mã hóa 4 bit thành 1 ký tự sau đó được biểu thị dưới dạng 8 bit), $4/3\xấp xỉ1,33$ đối với Base64 (mã hóa 24 bit thành 4 ký tự sau đó được biểu thị dưới dạng 32 bit). Vì lý do này và cũng vì bất kỳ thay đổi định dạng nào đều có chi phí tính toán không nhỏ, nên nó thường không được sử dụng cho các tải trọng lớn, như video.

Điểm:0
lá cờ si

ASCII là một mã hóa, không phải là một phương pháp mã hóa. ASCII biến một số ký tự nhất định (bảng chữ cái tiếng Anh, một số ký hiệu và một số ký tự điều khiển không in được như "tab" hoặc "nguồn cấp dữ liệu") thành các giá trị nhị phân 7 bit. Điều này thường được thực hiện khi mã hóa từng ký tự ASCII thành một byte 8 bit và đặt bit quan trọng nhất của byte đó thành 0.

Một số hệ thống máy tính cổ đại (hầu hết chỉ được tìm thấy trong viện bảo tàng hoặc trong bộ sưu tập của những người đam mê máy tính cũ) không hỗ trợ ASCII hoặc byte 8 bit, thay vào đó, dữ liệu được mã hóa theo cách khác. EG máy tính lớn IBM 1401 từ dữ liệu được mã hóa năm 1959 bằng cách sử dụng ký tự 6 bit trong một sơ đồ thập phân được mã hóa nhị phân đặc biệt. Điều này thực sự chỉ quan tâm đến lịch sử.

Các hệ thống máy tính hiện đại hầu hết không sử dụng ASCII mà thay vào đó sử dụng Unicode, thường ở dạng mã hóa UTF-8. Điều này cũng sử dụng byte 8 bit, nhưng bit quan trọng nhất không cần phải là 0.

Bất kỳ phương pháp mã hóa nào hoạt động trên byte đều có thể hoạt động trên dữ liệu ASCII, vì dữ liệu ASCII bao gồm các byte.

Bất kỳ phương thức mã hóa nào chỉ hoạt động trên tập hợp con byte được ASCII cho phép đều có thể hoạt động trên các byte tùy ý bằng cách trước tiên mã hóa các byte tùy ý đó bằng sơ đồ ánh xạ byte vào tập hợp con ASCII của byte, chẳng hạn như Base64.

Do đó, bất kỳ thứ gì có thể được mã hóa bằng các phương thức mã hóa (hiện đại, an toàn) khác cũng có thể được mã hóa bằng một phương thức chỉ chấp nhận các ký tự ASCII.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.