密碼學實驗題 03 3 AES實驗

2021-10-11 21:15:47 字數 2667 閱讀 6745

寫成好看的形式:

上面是我查詢的文獻編號順序,現在列舉出來作為備忘(序號微調一下):

這裡僅貼一些圖出來:

《aes演算法的s盒分析及改進**_張學旺.pdf》文獻裡寫到:

《aes的s盒和逆s盒的代數表示式_馬虹博.pdf》文獻裡寫到:

好了,現在再回到 sage數學庫的《rijndael_gf.py》**實現,關鍵點有:

已加密用的s盒為例,關鍵點是: 

def _sub_bytes_pc(self, row, col, algorithm='encrypt', no_inversion=false):

r"""

return a polynomial representing `subbytes(a)_}`.

"""if algorithm == 'encrypt':

var = self.state_vrs[row, col]

coeffs = self._sb_e_coeffs

if no_inversion:

return sum([coeffs[i] * (var**(2**i))

for i in range(8)]) + self._f("x^6 + x^5 + x + 1")

else:

# 靜水流深 除錯注釋

# return sum([coeffs[i] * (var**(255 - 2**i))

# for i in range(8)]) + self._f("x^6 + x^5 + x + 1")

tempreturn = sum([coeffs[i] * (var**(255 - 2**i)) for i in range(8)]) + self._f("x^6 + x^5 + x + 1")

return tempreturn

elif algorithm == 'decrypt':

var = self.state_vrs[row, col]

coeffs = self._sb_d_coeffs

result = (sum([coeffs[i] * var**(2**i) for i in range(8)]) + \

self._f("x^2 + 1"))

if no_inversion:

return result

else:

return result ** 254

else:

raise valueerror(("keyword 'algorithm' must be either 'encrypt' "

"or 'decrypt'"))

self._sb_e_coeffs = [self._f("x^2 + 1"),

self._f("x^3 + 1"),

self._f("x^7 + x^6 + x^5 + x^4 + x^3 + 1"),

self._f("x^5 + x^2 + 1"),

self._f("x^7 + x^6 + x^5 + x^4 + x^2"),

self._f("1"),

self._f("x^7 + x^5 + x^4 + x^2 + 1"),

self._f("x^7 + x^3 + x^2 + x + 1")]

self._sb_d_coeffs = [self._f("x^2 + 1"),

self._f("x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x"),

self._f("x^6 + x^5 + x^4 + x^3 + x^2 + x + 1"),

self._f("x^6 + x^4 + x^3 + x"),

self._f("x^6 + x^5 + x^4 + x^3"),

self._f("x^6 + x^4 + x^3 + 1"),

self._f("x^7 + x^6 + x^4 + x^3 + x + 1"),

self._f("x^6 + x^5 + x^3 + x^2 + x")]

所以,針對問題【利用sage構建aes的s盒和逆s盒?】,知道如何改**了吧o(∩_∩)o哈哈~

備註:有關aes中使用的 gf(2^8)上面的作為【模數】的本源多項式,請參考俺的博文:

《密碼學實驗題_03.3_aes實驗_【rijndael-gf】和【gf(2^8)上的本源多項式】等(基於sage)》

在此all! 

密碼學實驗二

miller rabin檢測 miller rabin檢測是目前應用比較廣泛的一種 二次探測定理 如果p是乙個素數,且0這就是miller rabin素性測試的方法。不斷地提取指數n 1中的因子2,把n 1表示成d 2 r 其中d是乙個奇數 那麼我們需要計算的東西就變成了a的d 2 r次方除以n的餘...

實驗吧 密碼學trivial

原題 usr bin env python import sys alphal abcdefghijklnmopqrstuvqxyz alphau abcdefghijklmnopqrstuvqxyz num 0123456789 keychars num alphal alphau if len ...

實驗吧 密碼學 變異凱撒

afz r9vyfscoeo ul rwuc 既然是凱撒,本質還是移位密碼,但是要注意區別,看到比傳統的凱撒增加了字元和數字,但是問題在於加了那些符號字元。為了避免這個問題,我們可以直接算移位個數,a f 移位5,f l移位6,z a移位7 似乎又與ascii表對應。比較簡單的指令碼就是把他們都移位...