每日總結(jié)-第四十二天-密碼學(xué)

https://blog.51cto.com/13479739/2484361
有關(guān)13種常見密碼學(xué)算法的一個(gè)系列

分組加密算法

DES

長度:8字節(jié)胀滚,加密輪數(shù):16
https://xz.aliyun.com/t/6748
識別:S盒,IP置換表,P置換表

AES

AES 密鑰長度(32位比特字) 分組長度(32位比特字) 加密輪數(shù)
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14

加密輪數(shù):10-14
https://www.anquanke.com/post/id/85656
識別:S盒(但是S盒可能是動態(tài)生成的)、列混合(矩陣乘法{ 2, 3, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 3, 1, 1, 2})、密鑰生成時(shí)的輪常量(01000000, 02000000, 04000000, 08000000, 10000000)

RC6

序列密碼

RC4

Rabbit

主要有幾個(gè)常數(shù):

a0 = a3 = a6 = 0x4d34d34d
a1 = a4 = a7 = 0xd34d34d3
a2 = a5 = 0x34d34d34

Hash算法

Md5

https://blog.csdn.net/u012611878/article/details/54000607
對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組呕屎,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成敬察,將這四個(gè)32位分組級聯(lián)后將生成一個(gè)128位散列值秀睛。
第一步、填充:如果輸入信息的長度(bit)對512求余的結(jié)果不等于448莲祸,就需要填充使得對512求余的結(jié)果等于448蹂安。填充的方法是填充一個(gè)1和n個(gè)0。填充完后锐帜,信息的長度就為Nx512+448(bit)田盈;
第二步、記錄信息長度:用64位來存儲填充前信息長度缴阎。這64位加在第一步結(jié)果的后面允瞧,這樣信息長度就變?yōu)镹512+448+64=(N+1)512位。
第三步、裝入標(biāo)準(zhǔn)的幻數(shù)(四個(gè)整數(shù)):標(biāo)準(zhǔn)的幻數(shù)(物理順序)是(A=(01234567)16瓷式,B=(89ABCDEF)16,C=(FEDCBA98)16语泽,D=(76543210)16)贸典。
第四步、四輪循環(huán)運(yùn)算:循環(huán)的次數(shù)是分組的個(gè)數(shù)(N+1)

SHA1

SHA1算法的輸入是最大長度小于2^64比特的消息踱卵,輸入消息以512比特的分組為單位處理廊驼,輸出是160比特的消息摘要。SHA1的初始化散列值:
H0 = 0x67452301
H1 = 0xEFCDAB89
H2 = 0x98BADCFE
H3 = 0x10325476
H4 = 0xC3D2E1F0

SHA256

SHA256算法的輸入是最大長度小于2^64比特的消息惋砂,輸出是256比特的消息摘要妒挎,輸入以512比特的分組為單位處理。
SHA256中用到兩種常量:
8個(gè)哈希初值=>自然數(shù)中前8個(gè)質(zhì)數(shù)(2,3,5,7,11,13,17,19)的平方根的小數(shù)部分取前32bit :
h0 := 0x6a09e667
h1 := 0xbb67ae85
h2 := 0x3c6ef372
h3 := 0xa54ff53a
h4 := 0x510e527f
h5 := 0x9b05688c
h6 := 0x1f83d9ab
h7 := 0x5be0cd19
64個(gè)哈希常量=>自然數(shù)中前64個(gè)質(zhì)數(shù)(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97…)的立方根的小數(shù)部分取前32bit :
428a2f98 71374491 b5c0fbcf e9b5dba5
3956c25b 59f111f1 923f82a4 ab1c5ed5
......

SHA512

SHA256算法的輸入是最大長度小于2^128比特的消息西饵,輸出是512比特的消息摘要酝掩,輸入以1024比特的分組為單位處理。
H(0)0 = 6a09e667f3bcc908
H(0)1 = bb67ae8584caa73b
H(0)2 = 3c6ef372fe94f82b
H(0)3 = a54ff53a5f1d36f1
H(0)4 = 510e527fade682d1
H(0)5 = 9b05688c2b3e6c1f
H(0)6 = 1f83d9abfb41bd6b
H(0)7 = 5be0cd19137e2179

非對稱加密

DH密鑰交換

http://wsfdl.com/algorithm/2016/02/04/%E7%90%86%E8%A7%A3Diffie-Hellman%E5%AF%86%E9%92%A5%E4%BA%A4%E6%8D%A2%E7%AE%97%E6%B3%95.html

RSA

https://www.cnblogs.com/P201521440001/p/11439344.html#cjsEEbwk

ElGamal

http://www.reibang.com/p/cd36ae7dca47
安全基礎(chǔ):離散對數(shù)求解的困難性

橢圓曲線公鑰加密體制

https://xz.aliyun.com/t/6295
有限域GF(p)上的橢圓曲線:
y^3 \equiv x^3 + ax + b(mod\;p)
p是大素?cái)?shù)眷柔,a期虾、b、x和y均在有限域GF(p)中驯嘱,且滿足4a^3 + 27b^2(mod\;p) \neq 0镶苞,通常用E_p(a, b)表示。

MH背包公鑰加密體制

基礎(chǔ):超遞增序列背包問題的解容易求得鞠评。
密鑰生成:A={a_1, a_2, ..., a_n}是一個(gè)超遞增整數(shù)序列茂蚓,取素?cái)?shù)p、b, p > a_1+a_2+...+a_n, 1<=b<=p-1剃幌,計(jì)算t_i \equiv ba_i(mod\;p), 1<=i<=n則公鑰為t=(t_1, t_2, ..., t_n)和p,私鑰為A和b
加密算法:設(shè)明文塊二進(jìn)制表示為m=m_1m_2...m_n聋涨,則使用加密算法c \equiv t_1m_1+t_2m_2+...+t_nm_n(mod\;p)
解密算法:通過公式S \equiv b^-1c(mod\;p)計(jì)算得到S, 對超遞增序列A以及整數(shù)S,利用超遞增背包問題求解负乡。

Rabin公鑰加密體制

密鑰生成:隨機(jī)選取兩個(gè)大素?cái)?shù)p,q,并且p \equiv 3(mod\;4),q \equiv 3(mod\;4),將p,q作為私鑰牛郑,n = p*q作為公鑰
加密算法:設(shè)明文塊為m(m<n),運(yùn)用公式c \equiv m^2(mod\;n)進(jìn)行加密
https://xz.aliyun.com/t/5113

分組密碼工作模式

  • 電子密碼本模式ECB


  • 密碼分組鏈接模式CBC


  • 密碼反饋模式CFB


  • 輸出反饋模式OFB


  • 計(jì)數(shù)器模式(CTR)


填充方式

轉(zhuǎn)載:http://www.reibang.com/p/fbfc886a9f73
一個(gè)記錄敬鬓,侵刪淹朋。

位填充

位填充可用于任意長度的信息。
在原始信息后添加一個(gè)“設(shè)定”位(“1”)钉答,再添加“重設(shè)”位(“0”)至要求的長度础芍。“重設(shè)”位(“0”)的數(shù)量取決于原始信息末尾到塊邊緣的距離数尿。其中填充的0的個(gè)數(shù)可以為0仑性。
例如:
一段23位的信息可填充9位以填滿一個(gè)32位的塊

... | 1011 1001 1101 0100 0010 0111 0000 0000 |

位填充在很多哈希函數(shù)(例如MD5和SHA)中作為兩步填充方案中的第一步。

字節(jié)填充

字節(jié)填充可用于可編碼為整數(shù)字節(jié)(一個(gè)字節(jié)為8位)大小的信息右蹦。

ANSI X.923

塊的大小為8字節(jié)诊杆,需要填充4字節(jié)

... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 |

無論原始信息的最后一個(gè)塊是否滿8字節(jié)歼捐,都需要在后面進(jìn)行填充。所以DD DD DD DD 00 00 00 04中的00 00 00 04只能理解為填充信息晨汹,如果原始信息為DD DD DD DD 00 00 00 04豹储,則填充后的結(jié)果應(yīng)該為DD DD DD DD 00 00 00 04 | 00 00 00 00 00 00 00 08。如此便消除了歧義淘这。

ISO 10126

塊的最后一個(gè)字節(jié)寫入填充的長度剥扣,其他填充位置寫入隨機(jī)數(shù)

... | DD DD DD DD DD DD DD DD | DD DD DD DD 81 A6 23 04 |

同樣,為了避免歧義铝穷,如果長度剛好是8字節(jié)的整數(shù)倍則填充8字節(jié)

PKCS #5 & PKCS #7

每個(gè)填充字節(jié)的值是用于填充的字節(jié)的個(gè)數(shù)钠怯,即是說,若需要填充N個(gè)字節(jié)曙聂,則每個(gè)填充字節(jié)值都是N晦炊。填充的字節(jié)數(shù)取決于算法可以處理的最小數(shù)據(jù)塊的字節(jié)數(shù)量。

... | DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 |

任何情況下都需要填充宁脊。PKCS #5和PKCS #7填充方式相同刽锤,但PKCS #5僅為使用64位塊大小的塊密碼定義使用。

ISO/IES 7816-4

ISO/IES 7816-4與位填充的方式相同朦佩,在需要填充的第一個(gè)位置填充80并思,之后填充多個(gè)00(00的個(gè)數(shù)可以為0)

... | DD DD DD DD DD DD DD DD | DD DD DD DD 80 00 00 00 |

補(bǔ)零

在塊的最后填充0以達(dá)到塊的定長

... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 00 |

該方式在原始信息末尾幾個(gè)字節(jié)為00時(shí)同樣會產(chǎn)生歧義,而且前面的方法無法解決該歧義语稠。但0填充可以應(yīng)用在從其他方面可以獲知原始消息長度的情況下宋彼。通常0填充可以應(yīng)用在二進(jìn)制編碼的字符串中,在字符串中仙畦,填充的0作為空字符而不需要顯示输涕。

Openssl中的填充方式

Openssl中的填充方式有以下幾種

  • 不填充
  • PKCS #7
  • 0填充
  • ANSI X.923
  • ISO 10126
    其中 PKCS #7是默認(rèn)的填充方式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市慨畸,隨后出現(xiàn)的幾起案子莱坎,更是在濱河造成了極大的恐慌,老刑警劉巖寸士,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檐什,死亡現(xiàn)場離奇詭異,居然都是意外死亡弱卡,警方通過查閱死者的電腦和手機(jī)乃正,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婶博,“玉大人瓮具,你說我怎么就攤上這事。” “怎么了名党?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵叹阔,是天一觀的道長。 經(jīng)常有香客問我传睹,道長耳幢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任蒋歌,我火速辦了婚禮,結(jié)果婚禮上委煤,老公的妹妹穿的比我還像新娘堂油。我一直安慰自己,他們只是感情好碧绞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布府框。 她就那樣靜靜地躺著,像睡著了一般讥邻。 火紅的嫁衣襯著肌膚如雪迫靖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天兴使,我揣著相機(jī)與錄音系宜,去河邊找鬼。 笑死发魄,一個(gè)胖子當(dāng)著我的面吹牛盹牧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播励幼,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汰寓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苹粟?” 一聲冷哼從身側(cè)響起有滑,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嵌削,沒想到半個(gè)月后毛好,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苛秕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年睛榄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片想帅。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡场靴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旨剥,我是刑警寧澤咧欣,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站轨帜,受9級特大地震影響魄咕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚌父,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一哮兰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苟弛,春花似錦喝滞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缤削,卻和暖如春窘哈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亭敢。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工滚婉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帅刀。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓满哪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親劝篷。 傳聞我的和親對象是個(gè)殘疾皇子哨鸭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355