1. 程式人生 > >利用赫夫曼編碼進行線上密碼對話

利用赫夫曼編碼進行線上密碼對話

說在前頭

該專案的所有程式碼上傳在GitHub

可以實現的功能

  1. 對26個大寫英文字母及空格進行赫夫曼編碼
  2. 通過第一點所述功能加上tornado實現簡單的線上密碼對話聊天(更多的tornado知識我會在後續更新)
  3. 這篇文章只是對github上的程式碼的一個使用說明,事先獲取程式碼可以更好的輔助你對這篇文章的閱讀
  4. 另外,有什麼不足的地方歡迎評論

介紹

該程式的主要核心檔案為huff_code資料夾下的huffman.py各種要求功能均已實現,除了介面的設計,該專案通過應用在網頁線上加密聊天來代替視窗的設計(實際上是用HTML來在網頁上設計視窗)

chat_online資料夾為對huffman.py的應用,主要技術為使用python的tornado的websocket來實現線上實時聊天.

環境說明

該專案使用python3實現Python3下載地址:https://www.python.org/downloads/

使用到的第三方庫有 tornado,pymysql

第三方庫的安裝方式:

windows:開啟cmd輸入pip install tornado (前提是Python安裝時已經加入系統環境變數,pymysql安裝同理)

Linux(一般Linux自帶兩個版本的Python):開啟終端輸入pip3 install tornado (pymysql同理)

執行說明

huff_code資料夾下的huffman.py可單獨執行(內有大量註釋)

chat_online資料夾下的線上聊天工程只需執行server.py檔案

注意

需要修改chat_online/templates/home.html檔案中var ws = new WebSocket("ws://10.31.66.157:8000/chatroom");

將其中的IP改為你當前的IP,並使用兩臺或以上在同ip下的電腦或手機在瀏覽器訪問網址,格式為 "你的ip:8000"

另外,我沒有給解密網頁跳轉連結,需要另開一個 "你的ip:8000/decode" 網頁

因為該專案有註冊頁面,需要使用資料庫,這裡使用的資料庫為Mysql5.6;另外注意Mysql8.0以上好像和pymysql不相容會報錯.

在資料庫中建立名為users的表.內容為username和password這裡給出建立命令

CREATE TABLE users(username varchar(1000), password varchar(1000));

註冊時請勿使用中文

並相應的在config.py下的資料庫裡改為你的設定

mysql = {
   "host": "",
   "user": "",
   "passwd": "",
   "dbName": ""        # users表所屬的庫名
}

在聊天時的注意

因為只對26個大寫的英文字母和空格進行編碼所以在輸入其他的字元時會出錯.

另外

網頁部分只對註冊頁面進行css美化,所以視覺上可能不是特別美觀

如果執行時報huff_code為找到的錯誤請手動將huff_code資料夾下的huffman.py複製到chat_online資料夾下,並改動chat_onlie/views/index.py檔案第7行 from huff_code import huffman 改為 import huffman儲存之後再次執行server.py即可