寫成好看的形式:
上面是我查詢的文獻編號順序,現在列舉出來作為備忘(序號微調一下):
這裡僅貼一些圖出來:
《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表對應。比較簡單的指令碼就是把他們都移位...