密碼工程 HW3 學號: 311552031 姓名: 蔡品緣 === ***INPUT*** ![](https://i.imgur.com/LPsUkyQ.png) ***步驟一*** 先將加密過的文字檔輸入: ![](https://i.imgur.com/hP1eVRb.png) ***步驟二*** 透過將加密文字分成n個groups,並分別計算IC,再將計算出n個groups的平均IC,找出最接近0.068或最大的IC的n即為key length。 ![](https://i.imgur.com/j5hlIPB.png) ![](https://i.imgur.com/f0UgUmP.png) 這裡我設定n可能為1~9,並根據n將字串分成n groups(k % j 個 groups),再透過上一次作業的方法計算IC,最後用key = j紀錄key length的大小。 ***步驟三*** 每個groups透過計算Chi-square的方法找出最小值,即為groups的shift位移量。 ![](https://i.imgur.com/r46OlHI.png) 根據key length分別對每個group透過shift 0到shift 25(A->Z)來分別計算Chi-square並找出最小時來找出其shift位移量,並將i group的位移量儲存於shift[i]。 ![](https://i.imgur.com/HHaILSI.png) 將位移量轉換成Chr即可找出key。 ***步驟四*** 將密文根據各個group的shift推移出明文。 ![](https://i.imgur.com/gWs2EEW.png) 透過反向shift算出明文的char並儲存於finalans。 ***步驟五*** 將明文寫回message_out檔案。 ![](https://i.imgur.com/g46T3oT.png) ***OUTPUT*** ![](https://i.imgur.com/pTP92Cu.png)