Mọi người cho mình hỏi Mã hoá và giãi mã Ceasar như thế nào nếu đầu vào là tiếng việt có dấu
Mã hoá và giải mã Caesar cho tiếng Việt có dấu
thì thay vì xài A-Za-z xài cái bảng này thôi
aAàÀảẢãÃáÁạẠăĂằẰẳẲẵẴắẮặẶâÂầẦẩẨẫẪấẤậẬbBcCdDđĐeEèÈẻẺẽẼéÉẹẸêÊềỀểỂễỄếẾệỆ
fFgGhHiIìÌỉỈĩĨíÍịỊjJkKlLmMnNoOòÒỏỎõÕóÓọỌôÔồỒổỔỗỖốỐộỘơƠờỜởỞỡỠớỚợỢpPqQrRsStTu
UùÙủỦũŨúÚụỤưƯừỪửỬữỮứỨựỰvVwWxXyYỳỲỷỶỹỸýÝỵỴzZ
map a \to 0, à \to1, ả \to 2 \dots
Tạo key như trên ntn vậy bạn, gõ tay hay code ntn vậy
code là
all_vn_chars = 'aAàÀảẢãÃáÁạẠăĂằẰẳẲẵẴắẮặẶâÂầẦẩẨẫẪấẤậẬbBcCdDđĐeEèÈẻẺẽẼéÉẹẸêÊềỀểỂễỄếẾệỆfFgGhHiIìÌỉỈĩĨíÍịỊjJkKlLmMnNoOòÒỏỎõÕóÓọỌôÔồỒổỔỗỖốỐộỘơƠờỜởỞỡỠớỚợỢpPqQrRsStTuUùÙủỦũŨúÚụỤưƯừỪửỬữỮứỨựỰvVwWxXyYỳỲỷỶỹỸýÝỵỴzZ'
vn_lowercase_char_to_int = {ch: i for i, ch in enumerate(all_vn_chars[::2])}
vn_uppercase_char_to_int = {ch: i for i, ch in enumerate(all_vn_chars[1::2])}
mã Ceasar hình như ko có in hoa in thường gì nhỉ
Ý tôi là làm sao để có dc all_char_vn ấy b, gõ tay thủ công á
copy paste thôi chứ sao
à toy tìm ở đây này: https://vietunicode.sourceforge.net/charset/vietalphabet.html
giảng viên tôi bắt mã hoá caesar, affine tiếng việt, dùng unicode mà nó cũng ko theo thứ tự nữa
Convert string sang bytes rồi xử lí mã hoá. Khỏi lo tập kí tự là gì luôn
là như thế nào nhỉ, t ko rõ lắm
Ví dụ cho đoạn text sau: Mã Hoá và Giải Mã
Convert sang mảng bytes với mã hóa utf-8 thì sẽ được mảng các số nguyên từ 0-255 như sau:
[77, 195, 163, 32, 72, 111, 195, 161, 32, 118, 195, 160, 32, 71, 105, 225, 186, 163, 105, 32, 77, 195, 163]
Thực hiện mã hóa Ceasar cho từng phần tử trong mảng bytes đó và lưu lại hoặc truyền đi đâu đó. Ở đầu nhận thực hiện ngược lại là ra chuỗi ban đầu thôi. Lúc này cho dù chuỗi ban đầu dùng tập kí tự là gì cũng không còn quan trọng nữa.