ASCII編碼
簡述:使用制定的7位或8位二進制陣列合來表示128或256種可能的字符,使用7位二進制數(剩下的1位二進制為0)來表示所有的大寫和小寫字母,數字0到9、標點符號,以及在美式英語中使用的特殊控制字符,
在線解密&工具:https://www.sojson.com/ascii.html

URL編碼
簡述:url編碼又叫百分號編碼,是統一資源定位(URL)編碼方式,URL地址(通常說網址)規定了常用地數字,字母可以直接使用,另外一批作為特殊用戶字符也可以直接用(/,:@等),剩下的其他所有字符必須通過在該位元組ascii碼的16進制字符前面加%編碼處理,
舉例:編碼方式很簡單,在該位元組ASCII碼的16進制字符前面加%,如空格字符,ASCII碼是32對應的16進制是‘20’,那么urlencode編碼結果是:%20,
在線解密&工具:http://www.hiencode.com/url.html
MD5
MD5即資訊摘要演算法,由16位或者32位數字(0-9)和字母(a-f)所組成的字串,字母大小寫統一;如果出現這個范圍以外的字符說明這可能是個錯誤的md5值,就沒必要再拿去解密了,
特征:有固定長度,一般是32位或者16位(16位值取的是8-24位),由數字“0-9”和字母“a-f”組成,
在線解密&工具:https://www.somd5.com/
base16編碼
簡介:Base16編碼就是將ASCII字符集中可列印的字符(數字0-9和字母A-F)對應的二進制位元組資料進行編碼,
原理:將資料(根據ASCII編碼,UTF-8編碼等)轉化成對應的二進制數,不足8位元位高位補0,然后將所有的二進制全部串起來,4個二進制為一組,轉化成對應十進制數,
根據十進制數值找到Base16編碼表里對應的字符,Base16是4個位元位表示一個字符,所以原始是1個位元組(8個位元位)剛好可以分成兩組,也就是說原先如果使用ASCII編碼后的一個字符,現在轉化成兩個字符,資料量是原先的兩倍,
特點:由字母A-F,數字0-9共16個字符組成,
在線解密&工具:https://ctf.bugku.com/tool/base16

base32編碼
簡介:與Base16編碼區別的是,Base32使用了ASCII編碼中可列印的32個字符(大寫字母A-Z和數字2-7)對任意位元組資料進行編碼,
原理:Base32將串起來的二進制資料按照5個二進制分為一組,由于傳輸資料的單位是位元組(即8個二進制位),所以分割之前的二進制位數是40的倍數(40是5和8的最小公倍數),如果不足40位,則在編碼后資料補充“=”,一個“=”相當于一個組(5個二進制位),編碼后的資料是原先的5倍,
特點:由字母A-Z,數字2-7共32個字符組成,“=”字符號作為后綴填充,(注:此處的“=”需大于3個)
在線解密&工具:https://ctf.bugku.com/tool/base32

base58編碼
簡介:Base58編碼和Base64一樣,Base58編碼的作用也是將非可視字符可視化(ASCII化),
原理:但不同的是Base58編碼去掉了幾個看起來會產生歧義的字符,如0,O(大寫字母o),I(大寫的字母i)和l(小寫的字母L),和幾個影響雙擊選擇的字符,如/,+,結果字符集正好58個字符(包括9個數字,24個大寫字母,25個小寫字母),而且因為58不是2的整次冪,所以沒有使用類似base64編碼中使用直接截取3個字符轉4個字符(3*8=4*6,2的6次方剛好64)的方法進行轉換,而是采用我們數學上經常使用的進制轉換方法—輾轉相除法,(本質上Base64編碼是64進制,Base58編碼是58進制)
在線解密&工具:https://www.lddgo.net/convert/base58

base62編碼
簡介:Base62編碼與Base64編碼類似,都用于資料內容編碼,但Base62的編碼方式比Base64更加緊湊,Base62是用62個可列印字符表示8位二進制資料(含無法顯示列印字符)的編碼方式,
原理:首先要將編碼的數字轉換為二進制,根據二進制資料按6位分組,給每6位二進制數轉換成對應的base62字符,即可得到base62編碼,
特點:由大小寫英文字母和數字0-9組成,共62個字符,
在線解密&工具:https://ctf.bugku.com/tool/base62
base64編碼
簡介:Base64編碼使用了ASCII編碼中的64個可列印字符(英文大小寫、數字0-9、和+、/)將任意位元組資料進行編碼,
原理:base64編碼要求把3個8位位元組轉化為4個6位位元組,之后在6位的前面補兩個0,形成8位一個位元組的形式,6位2進制能表示的最大數是2的六次方即64.這也是為什么是64個字符(A-Z、a-z、0-9、+、/這64個編碼字符,‘=’不屬于編碼字符,而是填充字符)的原因,
特點:
- 標準base64只有64個字符(英文大小寫、數字0-9、和+、/)以及后綴“=”;
- base64是把3個位元組變成4個可列印位元組,所以base64編碼后的字串一定能被4整除;
- 等號一定用作后綴,且數目一定是0個、1個或2個,
在線解密&工具:https://ctf.bugku.com/tool/base64

Base85編碼
簡介:base85也稱為ASCII85,是Paul E.Rutter為btoa實用程式開發的一種二進制文本編碼形式,
原理:Base85是用85個可列印字符表示8位二進制資料(含無法顯示列印字符)的編碼方式,通過使用五個ASCII字符來表示四個位元組的二進制資料(使編碼量1/4比原來大,假設每ASCII字符8個位元),它比UUENCODE或Base64更有效,它使用四個字符來表示三個位元組資料(1/3的增加,假設每個ASCII字符8個位元),
特點:Base85可用于在XML檔案中儲存二進制資料,相比于Base94不帶!"#&'<=>\這九個字符,無需轉義,奇怪的字符比較多,很難出現等號,
在線解密&工具:https://ctf.bugku.com/tool/base85
Base91編碼
簡介:basE91是將二進制資料編碼為ASCII字符的高級方法,它類似于UUencode或base64,但效率更高, basE91產生的開銷取決于輸入資料, 它的數量最多為23%(而base64為33%),范圍可以降低到14%,通常發生在0位元組塊上,這使得basE91對于通過二進制不安全連接(例如電子郵件或終端線)傳輸較大的檔案非常有用,
原理:Base91需要91個字符來表示ASCII編碼的二進制資料,從94個可列印ASCII字符中(0x21-0x7E)中,-(0x2D)、\(0x5C)、'(0X27)這三個字符被省略以構建base91,
特征:由91個字符(0-9,a-z,A-Z,!#¥%&()*+,./:;<=>?@[]^_`{|}~”)組成,
在線解密&工具:https://ctf.bugku.com/tool/base91

Base92編碼
簡介:一種用于將二進制資料轉換為可列印字符的編碼方式,與其他常見的編碼方式(如Base64)相比,Base92編碼具有更高的密度,可以在較短的字串中表示更多的資料,Base92編碼使用92個字符(ASCII字符集中除了控制字符和特殊字符外的所有可列印字符)來表示二進制資料,每個字符都對應著一個唯一的數值,從0到91(總共92個),
編碼程序如下:
- 將要編碼的二進制資料劃分為6位一組,
- 將每組6位轉換為對應的十進制數值(0-63),
- 使用92個字符中對應的字符來表示這個數值,例如,0表示字符"!",1表示字符"#",以此類推,
- 將轉換后的字符拼接起來,即得到Base92編碼后的字串,
解碼程序則是編碼的逆程序:
- 對Base92編碼后的字串進行逐字符的決議,
- 將每個字符轉換為對應的十進制數值,
- 將十進制數值轉換為6位的二進制數,
- 將所有的二進制數拼接起來,即得到原始的二進制資料,
特點:Base92編碼相對于其他編碼方式的主要優點在于它的密度更高,生成的編碼字串更短,但缺點是它的實作較為復雜,且并非廣泛使用,在實際應用中,使用Base92編碼可以有效地減小資料的存盤空間或傳輸負載,
在線解密&工具:https://ctf.bugku.com/tool/base92
Base100編碼
簡介:就是一堆Emoji表情
在線解密&工具:https://ctf.bugku.com/tool/base100
Shellcode編碼
簡介:在Shellcode的編碼技術中有眾多的編碼演算法,常用的有Base64編碼(采用Base64對網頁Shellcode進行編碼)、alpha_upper編碼(編碼后的整個Shellcode呈現ASCII可見字符編碼)和xor編碼(通過異或演算法實作編碼,編解碼程序比較容易實作,編碼后的長度增長也比較容易接收),在這三種方法中,后兩種都用于二進制Shellcode編碼,而且他們的原理也十分類似,
特征:Shellcode編碼中含有\x,形如:\x28\x18\xff\xff
在線解密&工具:https://www.toolhelper.cn/EncodeDecode/EncodeDecode
Quoted-printable編碼
簡介:Quoted-printable編碼方法適用于所傳送的資料中只有少量的非ASCII碼,例如漢字,這種編碼方法的要點就是對于可列印的ASCII碼,除特殊字符符號等號“=”外,都不改變,等號“=”和不可列印的ASCII碼以及非ASCII碼的資料的編碼方法是:現將每個位元組的二進制代碼用兩個十六進制數字表示,然后在前面加上一個等號“=”,
原理:任何一個8位的位元組可編碼成為3個字符:一個等號“=”后跟隨兩個十六進制數(0-9或A-F)表示改位元組的數值,
特征:Quoted-printable編碼中含有=,形如:=E9=82=A3=E4=BD=A0
在線解密&工具:http://www.metools.info/code/quotedprintable231.html
XXEncode編碼
簡介:XXEcode編碼是一種二進制到文字的編碼,它跟UUEcode以及Base64編碼方法很類似,它也是定義了可列印字符表示二進制文字的一種方法,不是一種新的編碼集合,
原理:XXEnode編碼將輸入文本以每三個位元組為單位進行編碼,如果最后剩下的資料少于三個位元組,不夠的部分用零補齊,三個位元組共有24個Bit,以6bit為單位分為4個組,每個組以十進制來表示所出現的位元組的數值,這個數值只會落在0到63之間,它64個可列印字符固定位元組范圍以及順序,包括大小寫字母,數字以及+-字符,
特征:它較于UUEncode編碼優點在于它64字符是常見字符,沒有任何特殊字符,
在線解密&工具:http://www.hiencode.com/xxencode.html
UUEncode編碼
簡介:UUEncode編碼是一種二進制到文字的編碼,它不是MIME編碼中一員,最早在unix郵件系統中使用,全稱:Unix-to-Unix encoding,它也是定義了用可列印字符表達二進制文字的一種方法,并不是一種新的編碼集合,
原理:UUEncode編碼將輸入文本以每三個位元組為單位進行編碼,如果最后剩下的資料少于三個位元組,不夠的部分用零補齊,三個位元組共有24個Bit,以6個bit為單位分為4個組,每個組以十進制來表示所出現的位元組的數值,這個數值只會落在0-63之間,然后將每個數加上32,所產生的結果剛好落在ASCII字符集中可列印字符的范圍中,跟base64編碼具有非常多的類似,也做了一些特殊轉碼說明,
特點:64位,一組6位,它定義64字符,不用寫映射表,是通過加32轉換到可列印字符范圍中,相較于Base64編碼更為簡單,
在線解密&工具:http://www.hiencode.com/uu.html
Unicode編碼
簡介:目前的Unicode字符分為17組編排,0x0000至0x10FFFF,每組稱為平面,而每平面擁有65536個碼位,共1114112個,然而目前只用了少數平面,UCS-4根據最高位為0的最高位元組分成27=128個group,每個group再根據次高位元組分為256個平面,每個平面根據第三個位元組分為256行,每行有256個碼位,group 0的平面0被稱作BMP,如果UCS-4的前兩個位元組為全零,那么將UCS-4的BMP去掉前面的兩個零位元組就得到了UCS-2,每個平面有216=65536個碼位,Unicode計劃使用了17個平面,一共有17×65536=1114112個碼位, 在Unicode 5.0.0版本中,已定義的碼位只有238605個,分布在平面0、平面1、平面2、平面14、平面15、平面16,最常用的是0平面,ASCII碼在0平面的開始部分,中日韓統一表意文字在 4E00-9FFF之間,
特點:國際標準字符,將全球的各種語言的每個字符定義一個唯一的編碼,以滿足跨語言、跨平臺文本資訊的轉換,當編碼和解碼的字符集出現不一致的時候就會出現亂碼,
unicode一般有四種表示形式 &#x [Hex]: The &# [Decimal]: The \U [Hex]: \U0054\U0068\U0065 \U+ [Hex]: \U+0054\U+0068\U+0065,
在線解密&工具:https://www.toolhelper.cn/EncodeDecode/UnicodeChineseEncodeDecode
凱撒密碼
簡介:凱撒密碼是最早的代換密碼,使用單表代換,實作起來也比較容易,破解起來也不難,是很不安全的密碼,凱撒密碼是沒有密匙的,即使沒有密匙也能將它破解出來,因為凱撒移位密碼只有25種密匙,最多就是將這25種可能性挨個檢測一下可以了,這就是我們所說的暴力破解法,當然,還可以使用頻度分析法分析每個字母出現的頻率,從而知道凱撒密碼的移位數,
原理:通過把字母移動一定的位數來實作加密和解密,明文中的所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文,
在線解密&工具:https://ctf.bugku.com/tool/caesar
Brainfuck加密
簡介:Brainfuck是一種極小化的計算機語言,它是由Urban Müller在1993年創建的,由于fuck在英語中是臟話,這種語言有時被稱為brainf*ck或brainf**k,甚至被簡稱為BF,Ook與Brainfuck類似,也是用替換法,
特征:brainfuck語言用> < + - . , [ ]八種符號來替換C語言的各種語法和命令,
在線解密&工具:https://ctf.bugku.com/tool/brainfuck
Ook加密
簡介:Ook!是由David Morgan-Mar創建的一個玩笑深奧的編程語言,它代表一長串瑣碎的Brainfuck命令替換中的第一個而不是最后一個,因此,它是TrivialBrainfuckSubstitution編程語言家族的成員,
特征:ook密碼中有大量ook,加上一些符號(!?.),
在線解密&工具:https://ctf.bugku.com/tool/brainfuck

.!?加密
特征:.!?密碼中只含有.!?三個不同的語法元素,使用Ook解密即可,
在線解密&工具:https://ctf.bugku.com/tool/brainfuck
社會主義核心價值觀編碼
特征:由24核心價值觀(富強、民主、文明、和諧,自由、平等、公正、法治,愛國、敬業、誠信、友善)組成,
在線解密&工具:https://ctf.bugku.com/tool/cvecode
標準銀河字母
簡介:標準銀河字母出自游戲《指揮官基恩》系列,是系列中使用的書寫系統,

仿射加密
簡介:仿射密碼是一種表單代換密碼,明文中所有字母對應成數值,經過加密函式加密成新的數值,再對應到相應的字母,組成密文,密文和明文一樣經過解密函式恢復成明文,
在線解密&工具:http://www.hiencode.com/affine.html

柵欄密碼
簡介:所謂柵欄密碼就是要把加密的明文分成N個一組,然后把每組的第一個字連起來,形成一段無規律的話,不過柵欄密碼本身就有一個潛規則,就是組成柵欄的字母一般不會太多,
原理:首先把要傳遞的資訊中的字母交替排成上下兩行,再將下面一行字母排在上面一行的后邊,從而形成一段密碼,
在線解密&工具:https://ctf.bugku.com/tool/railfence
HTML物體編碼
簡介:字符物體通俗講就是網頁檔案中復雜的符號代碼和一些標點的代碼,例如小于號 < 大于號 > 雙引號 "這些符號要在瀏覽器中顯示,在HTML檔案中都必需被轉化成字符物體,字符物體有三部分:一個和號 (&),一個物體名稱及一個分號(;),或者 # 和一個物體編號,以及一個分號,
在線解密&工具:https://www.lddgo.net/convert/htmlencode
鍵盤布局加密
簡介:按照所給字符在鍵盤上的一定規律,拼湊出來對應的字符,
Escape編碼
簡介:Escape采用了ISO Latin字符集對指定的字串進行編碼,所有的空格符,標點符號,特殊字符以及其他非ASCII字符都將被轉化成%xx格式的字符編碼(XX等于該字符在字符集表里面的編碼的16進制數字),
Escpace/Unescpae加密解碼/編碼解碼,又叫%u編碼,從以往的經驗看編碼字串出現有“u”,它是Unicode編碼,而Escape編碼采用UTF-16BE模式的unicode實作模式,
Escape編碼/加密,就是字符對應UTF-16 16進制表示方式前面加%u,Unescape解碼/解密,就是去掉"%u"后,將16進制字符還原后,由utf-16轉碼到自己目標字符,
在線解密&工具:http://www.esjson.com/escapeEncrypt.html
培根密碼
簡介:培根密碼本質上是將二進制資訊通過樣式的區別,加在了正常書寫之上,培根密碼所包含的資訊可以和用于承載其的文章完全無關,培根密碼實際上就是一種替換密碼,根據所給表一一對應轉換即可加密解密 ,它的特殊之處在于:可以通過不明顯的特征來隱藏密碼資訊,比如大小寫、正斜體等,只要兩個不同的屬性,密碼即可隱藏,
特征:僅有字母a,b組成(培根密碼中的ab,代表的是數學二進制中的0和1),
在線解密&工具:https://tool.bugku.com/peigen/

摩斯密碼
簡介:它發明于1837年,是一種早期的數字化通信形式,摩斯密碼也叫摩爾斯電碼,是一種時通時斷的信號代碼,通過不同的排列順序來表達不同的英文字母、標點符號和數字,摩爾斯電碼是一種早期的數字化通信形式,但是它不同于現代只使用零和一兩種狀態的二進制代碼,它的代碼包括五種:點、劃、點和劃之間的停頓、每個字符之間短的停頓、每個詞之間中等的停頓以及句子之間長的停頓,
特征:主要由“.”和“-”這兩個字符組成,
在線解密&工具:https://tool.bugku.com/mosi/

豬圈密碼
簡介:豬圈密碼又叫朱高密碼、共濟會密碼,是一種以格子為基礎的簡單替代式密碼,即使使用符號,也不會影響密碼分析,也可以用在其他的替代式的方法,
在線解密&工具:http://www.metools.info/code/c90.html

Rabbit密碼
Rabbit密碼(Rabbit cipher)是一種對稱密鑰密碼演算法,由Cohen和Wood設計于2003年,它被用作eStream密碼競賽的候選演算法之一,并最終成為了贏家,
Rabbit密碼采用了可變位移(可變拉鏈結構)和組合函式的設計思路,其中包括位移操作、非線性變換和線性變換等,它具有高度的安全性和良好的性能,適合用于軟體和硬體實作,
Rabbit密碼的基本結構如下:
- 首先,通過運算生成初始狀態,
- 利用初始狀態進行32輪迭代,每輪包括非線性變換和線性變換兩個步驟,
- 在最后一輪迭代后,輸出加密或解密結果,
Rabbit密碼的主要特點包括:
- 密鑰長度和分組長度可以靈活選擇,可以是128位、192位或256位,
- 速度較快,適合在不同平臺上實作,
- 提供高度的安全性,在廣泛的密碼分析中表現出強大的抵抗力,
需要注意的是,密碼學演算法的使用應遵循相關的安全最佳實踐,并根據特定的需求和環境選擇適當的演算法和配置,
在線解密&工具:https://www.codeeeee.com/encrypt/rabbit.html
埃特巴什碼
簡介:Atbash密碼是一種替換密碼,具有特定的密鑰,其中字母表中的字母是顛倒的,它也是希伯來文所用的數種密碼系統之一,
原理:最后一個字母代表第一個字母,倒數第二個字母代表第二個字母,
在線解密&工具:http://www.hiencode.com/atbash.html
playfair密碼
簡介:playfair密碼是一種使用一個關鍵詞方格來加密字符的加密法,1845年由英國人查爾斯·惠斯通發明,
演算法:它依據一個5*5的正方形組成的密碼來撰寫,密碼表里排列有25個字母,如果一種語言超過25個,可以去掉使用頻率最少的一個,如:法語一般去掉w或k;德語則是把i和j合起來當作一個字母看待,英語中z使用最少,可以去掉,
原理:
- 編制密碼表,在5*5的密碼表中,共有5行5列字母,第一行(或第一行)是密鑰,其余按照字母順序,密鑰是一個單詞或詞組,若有重復字母,可將后面重復的字母去掉,當然也要把使用頻率最高的字母去掉,(需要注意:這里字母I和J會被當成一個字母)
- 整理明文:將明文每兩個字母組成一對,如果成對后有兩個字母相同字母緊挨或最后一個字母是單個的,就插入一個字母X或者Q,
- 撰寫密文:若p1,p2在同一行,對應密文c1,c2分別是緊靠p1,p2右端的字母(其中第一列被看作是最后一列的后方);若p1,p2在同一列,對應密文c1,c2分別是緊靠p1,p2下方的字母(其中第一行被看作是最后一行的下方);若p1,p2不在同一行,同一列,則c1,c2是由p1,p2確定的矩陣的其他兩角的字母(至于橫向替換還是縱向替換要事先約定好,或自行嘗試),
特征:密文的字母數一定是偶數;任意兩個同組的字母都不會相同,如果出現這種字符必是亂碼和虛碼,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=912
棋盤密碼
簡介:棋盤密碼,即Polybius方表,世界上最早的一種密碼產生于公元前兩世紀,是由一位希臘人提出的,人們稱之為棋盤密碼,原因為該密碼將26個字母放在5*5的方格里,i,j放在一個格子里,如下圖所示:

特征:密文每兩個數字被編做一組,所有數字均在1-5之間浮動,這樣每個字母就對應了由兩個數構成的字符α和β,α是該字母所在行的標號,β是串列號,
在線解密&工具:https://www.qqxiuzi.cn/bianma/qipanmima.php
Nihilist加密法(關鍵字密碼)
簡介:Nihilist加密是一種矩陣式替換密碼,又叫關鍵字密碼,屬于Polybius密碼的變形種類,利用密鑰構建棋盤矩陣,如果字母是26個字母作為明文資訊,構建一個5*5的矩陣,將字母不重復的一次填入矩陣,并且i和j是等價的,
原理:首先選取一個關鍵詞已構成的polybius方格,即在5*5矩陣中填寫關鍵詞(去重),然后繼續在其中按順序填寫字母表的其余字母;然后選取的明文利用圖2-13將其轉換為數字(先行后列),
特征:純數字,只有1-5,密文長度為偶數,
解密腳本:
# write by 2021/7/6
# 關鍵字密碼,一種棋盤密碼的變種
def create_table(key):
key = key + "abcdefghiklmnopqrstuvwxyz"
table = ""
for i in key.replace("j", "i"):
if i not in table:
table += i
return table
def encrypt_nihilist(string, key):
ciphertext = ""
table = create_table(key)
for i in string.replace("j", "i").replace(" ", ""):
if i in table:
index = table.index(i)
ciphertext += str(index // 5 + 1) + str(index % 5 + 1) + " "
else:
return -1
return ciphertext.strip()
def decrypt_nihilist(string, key):
plaintext = ""
table = create_table(key)
lis = string.split(" ")
try:
for i in lis:
index = (int(i[0]) - 1) * 5 + int(i[1]) - 1
plaintext += table[index]
if table[index] == "i":
plaintext += "(j)"
except:
return -1
return plaintext
if __name__ == '__main__':
ciphertext_ = encrypt_nihilist("linux", "linux")
plaintext_ = decrypt_nihilist(ciphertext_, "linux")
print(f"{plaintext_}: {ciphertext_}")
Hill密碼(希爾密碼)
簡介:希爾密碼是運用基本矩陣論原理的替換密碼,由Lester S.Hill在1929年發明,每個字母當做26個進制數字:A=0,B=1,C=2…一串字母當成n維向量,跟一個n×n的矩陣相乘,再將得出的結果模26(注意:用作加密的矩陣—即密鑰,要求必須是可逆的,否則就不可能解碼,只有矩陣的行列式和26互質,才是可逆的,)
原理:首先需要定義一個矩陣a(要求該矩陣必須存在逆矩陣)作為加密密鑰,接著將需要加密的明文字母轉換為其對應字母表數字(1-a,2-b…),再將轉換后的明文數字序列按照密鑰矩陣的階數進行分組,最后將每組的數字序列和密鑰矩陣進行矩陣的乘法運算,即為密文數字序列,
特征:希爾密碼由于采用矩陣運算加密,因此在相同的密文加密時,可能會出現不同的密文,因此可以很好的抵御字母頻率攻擊法,
在線解密&工具:https://ctf.bugku.com/tool/hill
QWE密碼
簡介:就是一個很簡單的單表替換,該表是由電腦鍵盤的字母順序而來,比如“Q”對應“A”,“W”對應“B”,

解密腳本:
# write by 2021/7/23
# QWE密碼
DIC_QWE = "qwertyuiopasdfghjklzxcvbnm"
DIC_ABC = "abcdefghijklmnopqrstuvwxyz"
def encrypt_qwe(string):
ciphertext = ""
string = string.replace(" ", "")
for i in string:
if i in string:
if i in DIC_ABC:
ciphertext += DIC_QWE[DIC_ABC.index(i)]
else:
return -1
return ciphertext
def decrypt_qwe(string):
plaintext = ""
string = string.replace(" ", "")
for i in string:
if i in string:
if i in DIC_QWE:
plaintext += DIC_ABC[DIC_QWE.index(i)]
else:
return -1
return plaintext
if __name__ == '__main__':
ciphertext_ = encrypt_qwe("i love you")
plaintext_ = decrypt_qwe(ciphertext_)
print(f"{plaintext_}: {ciphertext_}")
曲路密碼
簡介:曲路密碼和柵欄密碼類似,是一種移位密碼,解題的時候將明文填入表中,并按照一定的曲路遍歷,

解密腳本:
# write by 2021/8/4
# 曲路密碼
import re
def encrypt_bend(string, col, row=10):
ciphertext = ""
temp = []
for i in range(col):
temp.append([])
for index, i in enumerate(string):
temp[index % col].append(i)
re_temp = list(reversed(temp))
for index, i in enumerate(re_temp):
if index % 2 == 0:
i = list(reversed(i))
ciphertext += "".join(i)
return ciphertext
def decrypt_bend(string, col, row=10):
plaintext = ""
length = len(string)
min_row = length // col # 最小的行數
min_num = col - length % col # 最小行數的列數
# 分組
temp = []
index = 0
for i in range(col):
if i < min_num:
temp.append(string[index:index+min_row])
index += min_row
else:
temp.append(string[index:index+min_row+1])
index += min_row + 1
print(temp)
# 改回列順序
for index, i in enumerate(temp):
if index % 2 == 0:
# print(re.findall(".{1}", temp[index]))
temp[index] = "".join(list(reversed(re.findall(".{1}", temp[index]))))
temp.reverse()
for i in range(length):
plaintext += temp[i % col][i // col]
return plaintext
if __name__ == '__main__':
col_ = 7
row_ = 5
ciphertext_ = encrypt_bend("i will beat you this day", col_, row_)
plaintext_ = decrypt_bend(ciphertext_, col_, row_)
print(f"{plaintext_} : {ciphertext_}")
云影密碼
簡介:云影密碼僅包含01248五個數字,其中0用于分割,其余數字用于做加和操作之后轉換為明文,(關于云影加密的描述網上相關資料較少,這里就用一道例題來解釋)
題目:8842101220480224404014224202480122
決議:云影加密中0是間隔符,所以把以0開頭的全部分隔開然后再看就會得到8個小塊,得到數字:88421 122 48 2244 4 142242 248 122,
通過查閱相關資料,云影加密中的15=1+2+4+8,所以上面的數字也是2的整數次冪,然后把上面的數字相加可以得到八組小于等于26的數,按照字母表順序,即分別代表八個字母:23-W、5-E、12-L、12-L、4-D、15-O、14-N,5-E,就求得密文為:WELLDONE,
解密腳本:
a="8842101220480224404014224202480122"
s=a.split('0')
print(s)
l=[]
for i in s:
sum=0
for j in i:
sum+=eval(j)
l.append(chr(sum+64))
print(''.join(l))
盲文
簡介:盲文又稱點字,國際通用的點字由6個凸起的圓點為基本結構,是專供盲文摸讀,書寫發文字符號,1829年,法國盲人路易·布萊爾受夜問的啟發,創造出了以簡單的凸點代替拉丁字母的盲文體系,國際上用他的名字來命名盲文(Braille),
布萊爾創造的由6個點為基礎結構的盲字,在紙面上由的凸起,有的不凸起,形成64種變化,即64種字符,在每個字符(單位稱“方”)左右兩側,每列各三個點,從左邊自上而下叫做1、2、3點,從走遍自上而下叫做4、5、6點,
分類:數字盲文-每個數字的盲文前面都有各“3456”點符形,是數字,表示后面的讀作阿拉伯數字,

英文字母盲文-英語字母盲文a-j都只用了1245點位即上半截,和數字的一樣;k-t是a-j下面加上了3號點位,

漢語拼音盲文-聲母、韻母(注意:聲母g/k/h在韻母i/u/ü時變讀為j/q/x,z/c/s/zh/ch/sh/r后面的i省略)、聲調,

聲母盲文對照表1

聲母盲文對照表2

聲調盲文對照表

韻母盲文對照表
在線解密&工具:https://symbl.cc/cn/tools/braille/
當鋪密碼
簡介:當鋪密碼是一種很有意思的密碼,專門用來加密數字的,不需要密鑰,明文資訊包含在加密后的密文中,它通過一個漢字中隱藏的資訊—筆畫數,來將漢字和數字關聯起來,將漢字定義為明文,將數字定義為密文,加密是將數字映射到對應筆畫的漢字,解密是將漢字按照筆畫映射回數字,
有很多的漢字筆畫數是相同的,所以可能會有多個明文(漢字)對應同一個密文(數字),讓然這個主要是看漢字筆畫映射表的選擇,如果映射表只準備了9個漢字,每種筆畫有一個漢字對應則是一對一的,否則是一對多的,一對一的話有個缺點就是如果要加密的明文中有重復的數字,比如33,轉換為“飛馬”比“三三”更難總結出規律,而這種沒有密鑰的加密方式重要的就是隱藏自己的規律,所以一對多會更難被破譯,
原理:根據當前漢字有多少筆畫出頭,對應的明文就是數字幾,
在線解密&工具:https://dsb.ink/ctf/dangpu.html
RSA
簡介: 1977年,RSA演算法由MIT的羅納德 · 李維斯特(Ron Rivest)、阿迪 · 薩莫爾(Adi Shamir)和倫納德 · 阿德曼(Leonard Adleman)共同設計,于1978年正式發布,以他們三人的首字母命名,RSA演算法是目前應用最廣泛的公鑰密碼演算法,但在這之前所用的對稱加密方式只采用一個密鑰,知道加密密鑰就可以知道解密密鑰,但是由于雙方需要事先約定加密的規則,就導致沒有辦法安全地交換密鑰,建立安全的傳遞通道,
但是1976年出現的非對稱加密演算法的思想就可以解決密鑰的交換和存放問題,它使用兩個密鑰,一個用來加密訊息和驗證簽名,叫公鑰,另一個用來解密,叫私鑰,加解密雙方是不平等的,這種新的構思是由美國計算機科學家Whitfield Diffie和Martin Hellman提出的,被稱為Diffie-Hellman密鑰交換演算法,RSA演算法就是受到它的啟發產生的,是這種構思的具體實作方式,既可以用來加密,解密,也可以用于密鑰交換,
RSA主要使用大整數分解這個數學難題進行設計,巧妙地利用了數論的概念,給了RSA公鑰,首先想到的攻擊就是分解模數,給了的因子攻擊者可以計算得到,從而也可以計算得到解密指數,我們稱這種分解模數的方法為針對RSA的暴力攻擊,雖然分解演算法已經穩步改進,但是在正確使用RSA情況下,當前的技術水平仍遠未對RSA的安全性構成威脅,如今,只有短的 RSA 密鑰才有可能被強力方式解破,
目前,RSA部署在許多商業系統中,Web服務器和瀏覽器使用它來保護Web流量,它可以用于保障電子郵件的隱私和真實性,還可以用于保護遠程登錄會話,同時它也是電子信用卡支付系統的核心,簡而言之,RSA常用于需要考慮數字資料安全性的應用中,
演算法步驟:
- 隨機選擇兩個不相等的質數p,q;
- 計算他們的乘積N=p*q;
- 計算歐拉函式φ(N)=(p-1)(q-1),N的二進制長度作為密鑰的長度;
- 隨機選擇一個加密密鑰e,這里1<e<φ(N),gcd(e,φ(N))=1;
- 根據以下公式求解得到解密密鑰d;
- 發布加密密鑰:(e,N);
- 保密解密密鑰:(d,N),
DSA
簡介:DSA是Schnorr和ELGamal簽名演算法的變種,被美國NIST作為DSS,DSA是基于整數有限域離散對數難題的,簡單的說,這是一種更該機的驗證方式,用作數字簽名,不單單只有公鑰、私鑰,還有數字簽名,私鑰加密生成數字簽名,公鑰驗證資料及簽名,如果資料和簽名不匹配則熱為驗證失敗,數字簽名的作用就是校驗資料在傳輸程序中不斷被修改,數字簽名,是單向加密的升級,
?DSA是基于整數有限域離散對數難題的,其安全性與RSA相比差不多,DSA的一個重要特點是兩個素數公開,這樣,當使用別人的p和q時,即使不知道私鑰,你也能確認它們是否是隨機產生的,還是作了手腳,RSA演算法卻做不到,
演算法步驟:
- 使用訊息摘要演算法將發送資料加密生成數字摘要;
- 發送方用自己的私鑰對摘要再加密,形成數字加密;
- 將原文和加密的摘要同時傳給對方;
- 接受方用發送方的公鑰對摘要解密,同時對收到的資料用摘要演算法產生同一摘要;
- 將解密后的摘要和收到的資料在接收雙方重新加密產生的摘要相互對比,如果兩者一致,則說明在傳送程序中資訊沒有破壞和篡改,否則,則說明資訊已經失去安全性,
serpent加密
簡介:serpent演算法是是一個非常經典的SPN式分組密碼體制,同時它的安全強度非常高,與Rijndael演算法一樣,Serpent尚未有重大安全漏洞被發現,但與之相比,Serpent的運算速度要比Rijndael慢上不少,這也式它落后的主要原因之一,
原理:Serpent演算法有兩個版本,區別是使用SBOX不同,Serpent-0使用DES的SBOX,Serpent-1使用新的SBOX,而SBOX是演算法的核心,是一種非線性的運算,XOR/亂序/線性變換都是線性運算,本身加密能力弱,主要用于增強雪崩效應,SERPENT使用的SBOX是4bit輸入4bit輸出的,Serpent演算法設計了8個SBOX,加密時0輪用sbox0,1輪用sbox1,……,7輪用sbox7,然后8輪用sbox0,……,15輪用sbox7,依次類推,128bit的輸入拆分成32份,依次進入sbox輸出4x32bit的資料,128bit資料拆分成32個4bit資料,并行進行SBOX運算的話,速度會大大受影響,硬體實作時候,為了提速,可以將每個SBOX實體化32個實體,然后一個單位時間就可以完成原來32個時間的作業量,解密時,SBOX使用的順序與加密相反,7 6 5 4 3 2 1 0 7 6…… 子密鑰使用的順序相反,線性變換與加密時互為反函式,

在線解密&工具:http://tool.chacuo.net/cryptserpent
AES
簡介:AES密碼學中的高級加密標準,又稱Rijindael加密法,是美國聯邦政府采用的一種區塊加密標準,這個標準用來代替原先的DES,已經被多方分析且廣為全世界所使用,
AES為分組密碼,把明文分成一組一組的,每組長度相等,每次加密一組資料,知道加密完整個明文,在AES標準規范中,分組長度只能事故128位,也就是說,每個分組為16個位元組,密鑰的長度可以使用128位,192位或256位,密鑰的長度不同,推薦加密輪數也不同,
演算法步驟:位元組代替、行移位、列混淆、輪密鑰加,
aaencode編碼
簡介:aaencode編碼即顏文字編碼,通過把js代碼轉換成顏文字的方式來編碼,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=703
jjencode編碼
簡介:jjencode是一種將js代碼轉化為只包含字母、數字和部分特殊字符的形式的混淆方法,jjencode會將每個js陳述句轉化為一個字串,然后使用特殊的轉義字符將這些字串拼接起來,
在線解密&工具:https://www.toolkk.com/tools/jjencode-encode-decode
jother編碼
簡介:jother編碼是在js代碼中,利用少量特定字符構造精簡的匿名函式對與字串的編碼方式,其中少量特定字符包括:“+”、“!”、“(”、“)”、“[”、“]”、“{”、“}”,由此可見,遞回在編碼程序中是必須的,編碼壓縮率大于100%或者更高,也就是說編碼后的長度比原長度長很多,
在線解密&工具:https://vulsee.com/tools/jother/index.htm
JSfuck加密
簡介:jsfuck源于一門編程語言brainfuck,其主要的思想就是只用8種特定的符號來撰寫代碼,而jsfuck也是沿用了這個思想,它僅僅使用6種符號來撰寫代碼,即“(”、“)”、“+”、“[”、“]”、“!”,
在線解密&工具:http://www.hiencode.com/jsfuck.html
敲擊碼
簡介:敲擊碼是一種非常簡單的方式對文本資訊進行編碼的方法,因改編碼對資訊通過使用一系列的點擊聲音來編碼命名,敲擊碼是基于5×5方格波利比奧斯方陣來實作的,不同點是用k字母被整合到C中,
在線解密&工具:http://www.hiencode.com/tapcode.html

ROT加密
簡介:rot密碼可以看作是凱撒密碼的一種變式,本質都是移位運算,可大致分為以下幾類:
rot5:只將字串的數字進行加密,步數為5,同時在0-9十個數字進行回圈,如1在rot5加密后為6,而6在rot5加密后為1,
rot13:只將字串中的字母進行加密,步數為13,加密方式上最接近凱撒密碼,分別在A-Z或a-z之間回圈,如A在rot13加密后為N,Z在rot加密后為M,
在線解密&工具:http://www.hiencode.com/rot13.html
rot18:字面意思(5+13=18)即將上述兩種加密方式結合,分別對數字和字母進行相應的操作,
rot47:由于無論是rot5、rot13或rot18都只能對數字和字母進行相應的加密,而對“@!#¥%&”之類的符號卻缺少加密,因此在此基礎上引入ASCII碼,所以rot47只是將步數改為47,對于數字、字母、常用符號進行編碼,按照它們的ASCII值進行位置替換,用當前字符ASCII值往前數的第47位對應字符替換當前字符,例如當前為小寫字母z,編碼后就變成大寫字母K,當前為數字0,編碼后變成符號“_”,
在線解密&工具:https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php
與佛論禪
簡介:與佛論禪加密其密文特點就是與佛文有關,
在線解密&工具:http://hi.pcmoe.net/Buddha.html
與熊論道
簡介:與熊論道加密其密文特點都是以“熊曰:”開頭,
在線解密&工具:http://hi.pcmoe.net/index.html
獸音
簡介:獸音其密文特點就是動物發出的叫聲“嗚”、“啊”、“ 嗷”以及符號“~”組成,
在線解密&工具:http://hi.pcmoe.net/roar.html
元音密碼
簡介:元音密碼是一種利用音標中的元音進行加密的密碼,撰寫簡便,非常實用,它是根據事先編制好的密碼表來對資訊進行加密的,
原理:密碼表的撰寫方法是,先寫下26個字母,在每個元音字母下標上標上數字,如A=1,E=2,I=3,O=4,U=4,然后根據每個元音右邊的輔音次序,將每個輔音下標上相應的數字,如B位位于元音A右邊第一的位置,所以它用數字11代替(意思是第一個元音右邊的第一個字母);Y位于元音U右邊第四的位置,因而代替它的數字是54,
解密腳本:
def vowel_en(s, mode=0, sign="."):
"""元音密碼 加密"""
if mode != 0 and mode != 1:
print("僅有模式0和1")
return
s = s.upper()
codes = [{'A': '10', 'B': '11', 'C': '12', 'D': '13', 'E': '20', 'F': '21', 'G': '22', 'H': '23', 'I': '30', 'J': '31', 'K': '32', 'L': '33', 'M': '34', 'N': '35', 'O': '40', 'P': '41', 'Q': '42', 'R': '43', 'S': '44', 'T': '45', 'U': '50', 'V': '51', 'W': '52', 'X': '53', 'Y': '54', 'Z': '55'},
{'A': '1', 'B': '11', 'C': '12', 'D': '13', 'E': '2', 'F': '21', 'G': '22', 'H': '23', 'I': '3', 'J': '31', 'K': '32', 'L': '33', 'M': '34', 'N': '35', 'O': '4', 'P': '41', 'Q': '42', 'R': '43', 'S': '44', 'T': '45', 'U': '5', 'V': '51', 'W': '52', 'X': '53', 'Y': '54', 'Z': '55'}]
ret = []
err = False
for i in s:
if i in codes[0]:
ret.append(codes[mode][i])
else:
err = True
ret.append(i)
if mode == 0:
ret = "".join(ret)
else:
ret = sign.join(ret)
print(ret)
if err:
print("有錯誤!")
return ret

圣堂武士密碼
簡介:圣堂武士密碼(豬圈密碼的變種)是基于他們的旗幟上有個紅十字,它由四個箭頭形狀組成,圣堂武士用三角形和圓點組合了25個符號,指向十字鍵頭的四個方向字母表中除了J之外的每個字母都用一種容易記住的模式替換了其中一個符號,

波利比奧斯方陣密碼
簡介:波利比奧斯方陣密碼是棋盤密碼的一種,是利用波利比奧斯方陣進行加密的密碼方式,簡單來說就是把字母排好了,用坐標(行列)的形式表現出來,字母是密文,明文便是字母對應的坐標,
原理:它是一個6行6列的矩陣,第一行為數字1~5,第一列也為數字1~5,表里是26個字母,除了I與J以外,每個字母都各占據一個格子,也就是每個字母都有它們的數字表示,類似于坐標,
它們的坐標讀取并不是我們習慣的行列讀取,而是與之列行讀取,比如字母“B”,用數字表示它就是“12”,而不是“21”,比如要表達單詞“HELP”,則寫成密碼就是23 15 31 35,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=913
博福特密碼
簡介:博福特密碼是一種類似于維吉尼亞密碼的代換密碼,由弗朗西斯·蒲福發明,它最知名的應用是Hagelin M-209密碼機,博福特密碼屬于對等加密,即加密演演算法與解密演演算法相同,
原理:是按照mod q減法運算的一種周期性代替密碼,即ci+td=δi(mi+td)≡(ki-mi+td)(mod q),所以,它和維吉尼亞密碼類似,以ki為密鑰的代替表是密文字母表為英文字母表逆序排列進行回圈右移ki+1次形成的,例如,若ki=3(相當于字母D),
在線解密&工具:https://wtool.com.cn/beaufort.html
滾動密鑰密碼
簡介:滾動密鑰密碼和維吉尼亞密碼有著相同的加密機制,區別是密鑰的選取,維吉尼亞使用的密鑰簡短,而且重復回圈使用,與之相反,滾動密鑰密碼使用很長的密鑰,比如參考一本書作為密鑰,這樣做的目的是不重復回圈使用密鑰,使密文更難破譯,盡管如此,滾動密鑰密碼還是可以被攻破,因為有關于密鑰和明文的統計分析模式可供利用,如果滾動密鑰密碼使用統計上的隨機密鑰來源,那么理論上是不可破譯的,因為任何可能都可以成為密鑰,并且所有的可能性都是相等的,
在線解密&工具:http://www.hiencode.com/runkey.html#:~:text=CTF%E5%9C%A8%E7%BA%BF%E5%B7%A5%E5%85%B7-%E5%9C%A8%E7%BA%BF%E6%BB%9A%E5%8A%A8%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86%7C%E5%9C%A8%E7%BA%BF%E6%BB%9A%E5%8A%A8%E5%AF%86%E9%92%A5%E8%A7%A3%E5%AF%86%7C%E6%BB%9A%E5%8A%A8%E5%AF%86%E9%92%A5%E5%AF%86%E7%A0%81%E7%AE%97%E6%B3%95%7CRunning,Key%20Cipher
同音替換密碼
簡介:同音替換密碼是單字母可以被其他幾種密文字母同時替換的密碼,通常要比標準替換密碼破解更加困難,破解標準替換密碼最簡單的方法就是分析字母出現頻率,通常在英語中字母'E'(或'T')出現的頻率是最高的,如果我們允許字母'E'可以同時被3種不同字符代替,那么就不能還是以普通字母的頻率來分析破解,如果允許可代替字符越多,那么密文就會更難破譯,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=919
ADFGX密碼
簡介:ADFGX密碼是結合改良過的Polybius方格替代密碼與單行換位密碼的矩陣加密密碼,使用了5個合理的密文字母:A、D、F、G、X這些字母之所以這樣選擇是因為當轉譯成摩爾斯電碼不易混淆,目的是盡可能減少轉譯程序的操作錯誤,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=918

ADFGVX密碼
簡介:ADFGVX密碼實際上就是ADFGX密碼的擴充升級版,一樣具有ADFGX密碼相同的特點,加密程序也類似,不同的是密文字母增加了V,使得可以再使用10數字來替換明文,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=917

雙密碼
簡介:雙密碼結合了波利比奧斯方陣換位密碼,并采用分級實作擴散,這里的“雙”是指用兩個密鑰進行加密,雙密碼是由法國Felix Delastelle發明,
在線解密&工具:http://www.hiencode.com/bifid.html
三分密碼
簡介:它是由法國Felix Delastelle發明的,三分密碼就是用3×3×3的矩陣加密的,它是第一個應用的三字母替換密碼,
原理:首先隨意制造三個3×3的Polybius方格替代密碼,包括26個英文字母和一個符號,并寫出要加密的訊息的三維坐標,然后選擇一個英文單詞當作密鑰,把重復字母去掉后填入方格中,再把剩下的字母按a-z順序填入,最后填入符號,訊息和坐標四個一列排在一起,再順序取橫行的數字,三個一組分開,將這三個數字當成坐標,找出對應的字母,便得到密文,
四方密碼
簡介:四方密碼是一種對稱式加密法,由法國Felix Delastelle發明,這種方法將字母兩個一組,然后采用多字母替換密碼,
原理:四方密碼用4個5×5的矩陣來加密,每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數字),首先選擇兩個英文字作密匙,例如example和keyword,對于每一個密匙,將重復出現的字母去除,即example要轉成exampl,然后將每個字母順序放入矩陣,再將余下的字母順序放入矩陣,便得出加密矩陣,
在線解密&工具:http://www.metools.info/code/four-square244.html
Bazeries密碼
簡介:Bazeries密碼是換位密碼和替換密碼的組合,使用兩個波利比奧斯方陣,一個明文字母方陣,使用一個隨機的數字(一般小于1000000)的生成一個密鑰矩陣同時作為第一輪明文劃分分組,比如2333這個數字翻譯為英文便是TWO THOUSAND THREE HUNDRED THIRTY THREE,從第一個字母T開始選取不重復的字母,之后再從字母表中按序選取沒有出現的字母組成密鑰矩陣,
Digrafid密碼
簡介:Digrafid密碼使用兩個密鑰生成分別生成類似波利比奧斯方陣的3×9方格的密表,
格朗普雷密碼
簡介:格朗普雷密碼是替換密碼的一種,一般使用8個8字母的單詞橫向填充8x8方陣,且第一列為一個單詞,并且在方陣中26個字母都必須出現一次以上,
舉例:

說明:明文中的字母在密陣位置可能不止一個,所以加密結果可能有多種,但是不影響解密,密陣還有6×6、7×7、9×9、10×10、幾種,顯然密陣越大每個字母被替換的情況就可能越多,那么加密效果就更好,
比爾密碼
簡介:比爾密碼是在1885年出版的一本小冊子中提到的三份密碼,比爾密碼的三份密碼都由1-4位的數字組成,第一份密碼說明了財寶的位置,第二份密碼則說明了財寶的內容,第三份密碼則列出了財寶所有者的姓名,
夏多密碼
簡介:作者麥克斯韋·格蘭特在中篇小說《死亡之鏈》塑造夏多這一英雄人物中所自創的密碼,整個夏多密碼由兩部分組成:

碼表

旋轉方向
狄德拉密碼

外星人密碼

克林貢語密碼

多斯拉克語

模擬語

海利亞語

樊凡語

跳舞的小人

神奇寶貝密碼

音符加密

海軍手旗旗語

六十甲子

國際船用信號旗密碼

Covenant字體

費茲象形文字

提瓦特文

OPT加密
簡介:是一種加密演算法,它使用一個隨機且只能使用一次的密鑰來加密資料,從而實作了非常高的加密安全性,
OPT演算法的核心在于“一次性”密鑰以及其與待加密資料長度相同,這意味著每個密鑰都是隨機生成的、不可重復的,并且只能用于加密一次,可以有效避免密鑰被破解的風險,同時,由于密鑰和待加密資料長度相同,OPT演算法具有非常高的安全性和保密性,即使攻擊者擁有密文和一部分密鑰資訊,也很難破解出原始的明文資料,
加密流程:
- 生成密鑰:隨機生成一個與待加密資料長度相同的密鑰,密鑰中的每個字符都是隨機的、不重復的,并且只能使用一次;
- 加密資料:將待加密資料和密鑰逐個字符進行異或操作,得到加密后的資料;
- 傳輸資料:將加密后的資料發送給接收方,并將密鑰以某種方式(如加密、物理交付等)安全地傳輸給對方;
- 解密資料:接收方使用接收到的密文和共享的密鑰進行異或操作,得到原始的明文資料,
需要注意的是,由于一次性密鑰和待加密資料長度相同,因此在實際應用中,使用OPT演算法加密大量資料時需要傳輸更多的密鑰資訊,增加了通信開銷;同時,密鑰必須是真正的亂數,否則可能會被攻擊者推算出來,影響加密的安全性,此外,OPT演算法還存在一些特殊情況和攻擊手段,如密鑰重用、密鑰泄露等等,需要進行額外的安全防范措施,
博多密碼
簡介:博多密碼,也叫巴拿馬密碼,是一種古典密碼學中的替換密碼,它采用了多個字母表,并通過一個基準詞來確定加密和解密使用的具體字母表,
原理:將基準詞中出現的所有字母按照順序排列并去除重復字母,得到字母表A;然后將剩余的字母按照字母表順序排列并去除重復字母,得到字母表B,字母表A和B都包含26個字母;接下來,將明文中的每個字母在字母表A中的位置作為行數,將該字母在字母表B中的位置作為列數,找到對應的密文字母,同理,將密文中的每個字母在字母表B中的位置作為行數,在字母表A中的位置作為列數,找到對應的明文字母,
博多密碼的優點是具有較好的安全性,但缺點也很明顯,即容易受到頻率分析攻擊等各種攻擊手段的攻擊,因此,它已經被更安全的加密演算法所取代,
在線解密&工具:https://www.boxentriq.com/code-breaking/baudot-code
費娜姆密碼
簡介:費納姆密碼其實是一種由二進制產生的替換密碼,費納姆密碼是基于模運算和簡單的數學運算,用于將明文轉換為密文,并將其傳輸到接收方,然后接收方使用同樣的數學運算和模運算來解密該資訊, 加密程序通常涉及一系列模運算、移位操作和加法操作,費納姆密碼可以通過增加運算的復雜性和混合復雜的運算與順序來提高安全性,
加密流程:
- 明文根據key轉化為數字;
- 數字和明(密)文進行XOR運算;
- 數字按組轉化為密文,
需要注意key一般直接使用ascii二進制和英文對照表,

費娜姆對照表1

費娜姆對照表2
變異凱撒

Type7混淆加密
簡介:Type 7 是一種 Cisco 設備密碼加密演算法,用于將明文密碼加密為不可逆的形式,這種加密演算法采用了 XOR 和 MD5 哈希的混合方式,使用一個給定的密鑰和額外的固定字串來生成加密后的密碼,因此也被稱為 Type 7 混淆加密,
原理:從一個有26個ASCII字符表中,產生一個種子值(Seed Value)(0-52之間)隨機抽取一個用來和明文密碼的第一個字符異或,產生的結果用16進制表示,放在加密后字串的第2、3位,然后種子值+1,再去抽取一個用來和明文密碼第二個字符異或,16進制結果放在隨后的位置位……,
在線解密&工具:http://www.atoolbox.net/Tool.php?Id=992&ac=csdn
其他的解密工具以及腳本后續整理好后再分享給大家......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556725.html
標籤:其他
上一篇:基于rancher搭建k8s
下一篇:返回列表
