題外話:最近某人在參加ctf比賽,為了尋找共同話題,並督促很久沒動過腦的我學習,也給我講解了幾道題。經過考慮,加密方面的題和我的專業相符些,所以決定先攻破這方面的一些習題,權作打發時間了。在此總結一些作題過程中涉及的演算法,加深記憶。
1.base64
概述:把明文對應成64個字元的加密演算法。
方法:每個字元對應8位二進位制數,因此可把字元轉化為二進位制數。將每6個二進位制數作為乙個單位,那麼共有64個這樣的6位二進位制數。設定64個字元與上述二進位制數一一對應。如此,在對字元加密時,可先將字元轉化為二進位制數,再將二進位制數對應到64個字元。
注意:字元轉化的二進位制數的個數一定是8的倍數,但不一定是6的倍數,不方便加密。一種解決方法是,將現有的數字進行補零,湊成6的倍數。但是,若補零後的二進位制數的個數不是8的倍數,則在解密時又無法順利轉換為明文本元。因此,在補零時需要使二進位制數的個數同時是6和8的倍數。目前,有一種通用的湊整方式:向明文本元中新增特殊的字元「=」(也可轉化為8位二進位制數)。明文本元轉化的二進位制數的個數只可能有三種情況:除以6餘0,除以6餘2,除以6餘4。第一種情況無需處理,第二種情況下,在明文本元後加兩個「=」,可將轉化後的二進位制數的個數變為6的倍數。第三種情況下,在明文本元後加乙個「=」,可將轉化後的二進位制數的個數變為6的倍數。
2.caesar加密
概述:把明文本元依次對應到後n個字元
方法:依次對應即可,如a對應到c,b對應到d,等等。
3.morse碼
概述:把明文本元對應成點和劃。
方法:有根據字母形狀設計的對應表。
4.冪數加密
概述:以序號代替英文本母,然後將序號表示為2的次方的和,將次方作為明文編碼。
方法:如,e對應的序號為5,那麼5=2^0+2^2,e對應的編碼為02。
5.柵欄加密
概述:把一行明文分成n行,然後按列讀取為密文。
方法:盡量把明文分割為長度相等的行,再讀取。
注意:其變體是w型柵欄加密。
6.培根密碼
概述:通過兩種字元表示明文(以a和b為例)
方法:將明文中的每個字母都轉換為a和b組成的5個字母。有對應密碼表。
7.亂入乙個新學到的方法,可以檢視字串的編碼:
chardet.detect(s)
可檢視字串s的編碼方式,置信度。
8.rsa加密
rsa公鑰檔案解密密文的原理分析 - angel_kitty - (cnblogs.com)
常用加密演算法概述
首先要明白的是數字證書簽名跟常說的加密演算法是兩回事。關於數字證書,概念請參照其他部落格。概念介紹部落格 1 md5 md5用的是雜湊函式,它的典型應用是對一段資訊產生資訊摘要,以防止被篡改。嚴格來說,md5不是一種加密演算法而是摘要演算法。無論是多長的輸入,md5都會輸出長度為128bits的乙個...
加密演算法概述
在程式設計中我覺的最重要的有三個部分程式語言,演算法和資料結構。如果失掉了演算法和資料結構那但留下程式語言也就沒有存在的必要了。因為前幾天工作中前端人員寫好了加密演算法,我在後端進行解析,同時把返回前端的資料也進行加密。我根據這種情況來介紹一下。本篇文章主要講一下加密的一些概念。在密碼學中有幾個重要...
加密演算法簡單概述
基本過程就是對原來為明文的檔案或資料按某種演算法進行處理,使其成為不可讀的一段 通常稱為 密 文 使其只能在輸入相應的金鑰之後才能顯示出本來內容,通過這樣的途徑來達到保護資料不被非法人竊取 閱讀 的目的。該過程的逆過程為解密,即將該編碼資訊轉化為其原來資料的過程。功能 對稱 symmetric 演算...