1. 程式人生 > >密碼學基礎(一)

密碼學基礎(一)

課程內容

  • 二進位制
  • 八進位制
  • 十進位制
  • 十六進位制
  • 進位制互轉

今天,我們正式開始學習密碼學基礎的相關知識。
大家有沒有認真的查詢”密碼學知識預熱“文件裡的相關概念呢?沒有也沒關係,就是暫時輸在了起跑線上嘛。雖然說密碼學在比賽中以應用為主,課程比重也較輕,但並不是說它不重要,因為在比賽中,很多時候拿到flag(什麼是flag??去百度或者谷歌”CTF中的flag“吧。什麼??不會上谷歌??去找帥學長或漂漂學姐幫忙吧)的關鍵步驟就是密碼破譯。當你竭盡全力用掌握的web滲透的方法獲取到了一段程式碼時,而這個程式碼又是一堆奇怪的字元,這可能就需要用到密碼破譯了。如果你的腦海裡沒有密碼學的相關知識,心裡默唸MMP並放棄它,是多麼可惜啊。
廢話少說,我們從最基礎的知識開始吧,

進位制,是一種計數方法。小時候老師教我們寫數字:1,2,3,4,5,6,7,8,9,寫到10你會發現數字由一位變成了兩位,並且老師還會多說一句,這叫”逢十進一“。任意一位計數到10時,9所處那個位置歸零,並把前一位加一,如19加1等於20,129加1等於130。其實,這就是十進位制。進位計數法可以用有限種數字符號表示所有數值。

二進位制

我們日常生活中應用最廣泛的就是十進位制,但是計算機可不認識十進位制,計算機是邏輯電路組成的,它只知道高電位低電位兩種狀態(也可以簡單的理解成為通電斷電)。偉大的家們就想到了,既然只有這兩種狀態,那我們就把高電位表示數字”1“,低電位表示數字”0“,二進位制就這樣誕生了。現代密碼幾乎都是用計算機處理的,所以再牛逼的密碼在計算機中也是用二進位制處理的。
二進位制就是”`逢二進一“,從0開始數起就是:0,1,10,11,100,101…10101110001…

八進位制

”逢八進一“,有0~7共8個數字,把二進位制中的3位數碼編成一組就是一位八進位制碼。

十六進位制

計算機裡用的較多的還有十六進位制,”逢十六進一“。實事上,在解答比賽中的逆向題的過程中,大家看到的幾乎都是十六進位制。十六進位制的前10個數字用0,1,2,3,4,5,6,7,8,9表示,而後6個數字10~15則用大寫的英文字母A(代表10),B(代表11),C(代表12),D(代表13),E(代表14),F(代表15)表示。

舉個例子:

十進位制數字520用上述進製表示為:
二進位制:1000001000
八進位制:1010
十六進位制:208
細心的同學應該發現,這520轉換成十六進位制後,長的跟十進位制一樣啊?我怎麼區分啊?其實,在實際應用中,最常用的表示十六進位制數值的方式是將 ‘0x’ 加在數字前,所以,我們應該把208寫成0x208

進位制互轉

小測驗:

1.想想看,時鐘用的是什麼進位制呢?
2.將二進位制數1111000010.01101分別轉換為八進位制、十進位制和十六進位制數。
3.將十進位制數137.5分別轉換成二進位制、八進位制。

囉嗦一句:進位制轉換可以在網上找到大把的工具,很容易算出結果,比賽中一定是優先利用工具求解,但是如果有的同學想考研,那一定要能熟練的寫出轉換步驟,進位制轉換可以考研的必備基礎呦。