01/10/2018, 10:45

Cần giúp về cách mã hóa thông tin đưa vào từ bàn phím

Xin chào mọi người em có một vấn đề nhỏ.
Em đang viết một chương trình python dạng console yêu cầu người dùng nhập bất kì thông tin nào đó từ bàn phím và sau đó sẽ mã hóa thông tin đó bằng một từ điển do người lập trình soạn ra.
Em đã hoàn thành xong phần chương trình mẫu của phần một tức là nhập từ bàn phím dữ liệu và lưu nó vào một file txt nhưng phần hai là chuyển những gì đã viết sang dạng mã hóa và giải mã ngược lại thì em chưa nghĩ ra được tại em đang đứng lại ở phần viết từ điển.
Em không muốn sử dụng dạng mã hóa mẫu đã có sẵn vì em nghĩ nó không thực sự tốt lắm nên em mới nảy ra ý dùng riêng một dict riêng của riêng cá nhân.

Để dễ hiểu hơn dưới đây là ví dụ
Em tạo ra một từ điển như sau:

Dict = A: 78e, B: 76n, C: 88m

Nhập từ bàn phím vào ba chữ ABC và sau đó chương trình sẽ mã hóa cho ra file txt chứa kí tự mã hóa là
78e 76n 88m

Sau đó để dịch lại thông tin nó sẽ chuyển các kí tự mã hóa lại ban đầu.

Có ai biết thuật toán giúp em làm chung với, sau khi làm xong em sẽ up hết mã cho mọi người như là một lời cám ơn hihi

HK boy viết 12:46 ngày 01/10/2018

encr = {'A': '78e', 'B': '76n', 'C': '88m'}

thì tạo 1 dict nữa để lưu ngược lại

decr = {'78e': 'A', '76n': 'B', '88m': 'C'}
Nguyễn Hiến viết 12:54 ngày 01/10/2018

Phần này thì mình làm xong rồi í mình là viết ra hàm để dịch ra đó bạn cái đó mình vẫn còn ngu hihi

HK boy viết 12:45 ngày 01/10/2018

Đừng hihi nữa bạn ơi. Nghiêm túc một chút.

Mình sẽ giúp bạn phần mã giả:

# Giả sử các kí tự của xâu s từ vị trí 0 đến i-1 đã được giải mã.
# Ta bắt đầu xem ở kí tự i.

word = ''
for j in range(i, len(s)):
    word += s[j]  # thêm kí tự s[j] vào từ word,
                  # nói 1 cách đơn giản đây là xâu từ vị trí i -> vị trí j
    if word in decr:
        print(decr[word])
        i = j + 1  # các kí tự từ vị trí 0 -> vị trí j đã được giải mã,
                   # ta bắt đầu với một vị trí mới là j + 1
Trần Ngọc Khoa viết 12:57 ngày 01/10/2018

Nếu bạn dùng ngôn ngữ bậc không được cao lắm như C thì có thể áp dụng cách dùng mảng để tham chiếu từ ký tự thường sang mã hoá. Code mình viết là mã giả nhé.

Đào An viết 12:53 ngày 01/10/2018

Dùng Advanced Encryption Standard (AES) để mã hóa hay hơn vì:
Mã hóa đc các kí tự có dấu tiếng việt
Ko có key thì ko thể dịch ngược
P/s ko biết ý chủ thớt cái dạng mã hóa có sẵn ko tốt ở điểm nào

Trần Ngọc Khoa viết 12:49 ngày 01/10/2018

Mã hoá AES thì cũng là một chuẩn mã hoá. Như đề cương môn học các môn về Bảo mật thông tin thì người ta cũng giới thiệu về Mã hoá caesar rồi dần dần đến các loại mã hoá bất đối xứng khác.
Việc áp dụng những giải thuật đã biết vào việc hiện thực phần mềm cũng khá tốt và đáng hoan nghênh

Nguyễn Hiến viết 12:46 ngày 01/10/2018

Mình đã nghiên cứu cái này
Thực sự nó khó vãi nồi nói chung là mình chưa đọc kĩ tại thấy nó dài quá
Nên mình đã tìm cách khác
Mình xài hai cái hàm
hexlify với unhexlify
Dễ xài mà nói chung cũng ngắn dễ tùy biến nhưng đấy là cách ban đầu
Mình thì đang xem cách chuyển qua AES luôn
Tóm lại là mình viết xong code rồi
Bây giờ mình sửa lại tí rồi mới up được
Cám ơn bạn

Nguyễn Hiến viết 13:00 ngày 01/10/2018

Mình đang cố gắng xài qua AES có bạn nào có ý kiến gì thì mình làm chung nhé
Cám ơn các bạn

Đào An viết 13:01 ngày 01/10/2018

Nếu muốn implement ngay thì tìm cái thư viện mà áp vào thôi b , chứ ai đi viết từ đầu. Còn yêu cầu đề bài bắt viết chương trình mã hóa thì b tiếp tục làm tiếp như phần trên là ok rồi

Nguyễn Hiến viết 12:49 ngày 01/10/2018

Thì mình đang làm luôn một cái khóa hết thông tin tốt luôn nên mới nhảy qua AES
Chứ cái bên trên mình cũng nghĩ tới rồi.

Nguyễn Hiến viết 12:47 ngày 01/10/2018

Sorry bạn lúc đầu mình nghĩ mấy chuẫn mã hóa có sẵn nó đều có thể giải ngược được nên mình mới nghĩ vậy.
Quên mất haizzzz
Cái này là tại lười không chịu đọc hết tài liệu
Các bạn nhẹ gạch bỏ qua

Bài liên quan
0