一:常見編碼型別
1、ASCII編碼
(1)特徵:
線上網址http://www.mokuge.com/tool/asciito16/
2、base家族編碼
(1)base64編碼
特點
:由A-Z,a-z,0-9,+,/64個可見字元組成、==符號作為字尾填充、不屬於編碼字元;一般情況下密文尾部會有兩個==符號,並且有大寫字母和小寫字母的混合組成
原理:3個8位字元變成4個6位字元,之後在6位的前面補兩個0;形成4個8位的形式
eg:
(2)base32編碼
特點
:由字母A-Z,數字2-7共32個可見字元組成;"=" 的作用作為字尾填充
(3)base16編碼
特點:使用0-9和字元A-F共計16個可見字元組成,不會出現"="字元
(4)base58編碼
特點
:用於比特幣的一種獨特的加密方法,主要用於產生位元比的錢包地址;相比於Base64,base58不使用數字0;字母大寫O,字母大寫I,字母小寫l,以及+和/符號
(5)base62編碼
特點
:相比於base64,不會使用+和/符號,就剛好62個可見字元
(6)base91;base92編碼
(7)base100編碼
特點
:就是一堆表情
3、unicode編碼
(1)特點:密文中有多個\uxxx
4、柵欄密碼
(1)特徵:所謂柵欄密碼,就是把要加密的明文分成N個一組,然後把每組的第1個字連起來,形成一段無規律的話,一般常見的就是兩欄(key=2);一般來說見到一堆字母沒有空格,就應該想一想是不是柵欄。
eg1:
fa{fe13f590lg6d46d0d0}
4、摩爾斯密碼
(1)特徵:密文由不規律的.、/、-和空格組成
eg1:
..-./.-../.-/--./----.--/-../...--/..-./-.-./-.../..-./.----/--.../..-./----./...--/----./----./...../-----/....-/-----.-
(2)解密:(發現裡面還有URL編碼)(進一步處理得到flag);解密網站:https://www.uutils.com/enc/morse.html
5、URL編碼
特點:url編碼的特徵是使用 "%" 其後跟隨兩位的十六進位制數來替換非 ASCII 字元
6、shellcode編碼
(1)特點:
是一段利用軟體漏洞而執行的程式碼、shellcode是16進位制的機器碼
7、XXencode編碼
8、UUencode編碼
9、AAencode編碼
將JS程式碼轉換成表情包,也就是常說的顏文字JS加密
10、JSfuck編碼
特點:JSfuck只使用6種字元[]!()+
來書寫任何的JS程式碼
11、jother編碼
特點:jother只使用8種字元[]!()+{}
來書寫任何的JS程式碼
12、Brainfuck
特點:使用8種字元,所有的操作都由這八種字元組成來完成
eg:
13、MD5加密
(1)#MD5中字元都是在a-f0-9之間;分為16位和32位
14、JS混淆
(1)特點:通常在JS指令碼里面使用eval與function函式進行混淆
eg:
<script>
eval("\x64\x65\x65\x45\x76")
</script>
(2)JS線上解混淆:http:/www.atool.org/jscompression.php
等等......
二:稀奇古怪的編碼
1、社會主義核心價值觀編碼
特點:
2、與佛倫禪
特帶:以佛曰
開頭
3、以熊論道
http://hi.pcmoe.net/
4、獸音加密
https://roar.iiilab.com/
5、ook加密
(1)特徵:ook密碼中有大量ook,加上一些符號;Ook! has only three distinct syntax elements:Ook.Ook?Ook!這種就是ook密碼
或者是這種型別的:
(2)解密:https://www.splitbrain.org/services/oo
6、+-<>加密
-+<>密碼解密:https://brainfuck-visualizer.netlify.app/
7、敲擊碼加密
特點:
8、豬圈密碼
(1)建材下載之後發現是base64編碼;嘗試base64編碼轉化文字,不成功,轉換為圖片成功了
發現是豬圈密碼:
解密拿到flag
9、棋盤密碼
(1)解密
資料密碼之後告訴我是一種5位元的編碼,直接百度,找到解碼網站
10、母音加密
11、hill密碼
eg:
等等......
三:複雜密碼型別
1、凱撒密碼
在密碼學中,愷撒密碼(英語:Caesar cipher),或稱愷撒加密、愷撒變換、變換加密,是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。
加密就是明文向後移動展現出對應的密文。
解密就是密文向前移動展現出對應的明文。
eg:
2、雲影密碼
此密碼運用了1248程式碼,因為本人才疏學法,問未發現有過使用的先例,因此暫歸為原創密碼。由於這個密碼,我和片風雲影初識,為了紀念,將其命名為“雲影密碼”。
有了1,2,4,8這四個苘單的數字,你可以以加法表示出0~9任何個數字,例如0=28,7=124,9=18這樣,再用1-26來表示A-Z,就可以用作密碼了。為了不至於混亂,我個人引入了第五個數字0,來用作間隔,以遍免翻譯錯誤,所以還可以稱“01248密碼”
注意(3個及以上數字時):
雖然是相加,但是可以在數字內不按順序相加,如124可寫成(12)4和1(24)結果分別是7和16,只要保證不大於26即可
3、培根密碼
培根所用的密碼是一種本質上用二進位制數設計的,沒有用通常的0和1來表示,而是採用a和b
eg:
4、轉輪機加密
解釋:指解密中密文涉及轉輪機加密,轉輪機密文的特點是等長的分好組的亂序字母,原理是轉齒輪把一個字母換成另一個來拼成一句話,所以會有多組金鑰,但是隻有一組密文。
(1)eg:
點選檢視程式碼
rotor = [ #這裡是要輸入的轉輪機原始字串]
cipher = "NFQKSEVOQOFNP" #這是要輸入轉輪機密文
key = [2,3,7,5,13,12,9,1,8,10,4,11,6] #這是要輸入轉輪機金鑰
tmp_list=[]
for i in range(0, len(rotor)):
tmp=""
k = key[i] - 1
for j in range(0, len(rotor[k])):
if cipher[i] == rotor[k][j]:
if j == 0:
tmp=rotor[k]
break
else:
tmp=rotor[k][j:] + rotor[k][0:j]
break
tmp_list.append(tmp)
# print(tmp_list)
message_list = []
for i in range(0, len(tmp_list[i])):
tmp = ""
for j in range(0, len(tmp_list)):
tmp += tmp_list[j][i]
message_list.append(tmp)
print(message_list)
def spread_list(lst):
for item in lst:
if isinstance(item,(list,tuple)):
yield from spread_list(item)
else:
yield item
pass
if __name__ == '__main__':
for i in spread_list(message_list):
print("*"*25)
print(i)
ECC的主要優勢是在某些情況下它比其他的方法使用更小的金鑰——比如RSA加密演算法——提供相當的或更高等級的安全。ECC的另一個優勢是可以定義群之間的雙線性對映,基於Weil對或是Tate對;雙線性對映已經在密碼學中發現了大量的應用,例如基於身份的加密。其缺點是同長度金鑰下加密和解密操作的實現比其他機制花費的時間長 [1] ,但由於可以使用更短的金鑰達到同級的安全程度,所以同級安全程度下速度相對更快。一般認為160位元的橢圓曲線金鑰提供的安全強度與1024位元RSA金鑰相當。
eg:
等等......
四:離線工具分享
1、常用指令碼
2、常用工具
(1)CaptfEncoder V2工具箱
幾乎涵蓋可常見的加密解密的方式,自行在github下載
(2)不一一介紹了,自行百度科普
注意:密碼學這方面很雜很亂,變化多端、此文章僅僅做了部分講解,密碼學這部分就告一段落了!謝謝大家!