ガロア体の逆数演算で、
GF(2^8)->GF((2^4)^2)
に変換して計算しようとしています。
それで、GF(2^8)元aより、GF((2^4)^2)の元bへの変換、
b=A*aがうまく行きません。
GF(2^8)では、生成多項式
X^8=p7*X^7+p6*X^6---
で元を順次つくります。1ビット単位のシフトレジスタを使って、
α^0=1h
α^1=2h
α^2=4h
と言う風になります。
GF((2^4)^2)では、生成多項式
Y^2=q1*Y+q0
で元をつくります。ここで、q1,q2は、GF(2^4)の元です。
したがって、4ビット単位のシフトレジスタを使って、
β^0=1h
β^1=10h
となります、ここでわからないのは、b=A*aの変換手順です。
a=α^0=1h
の場合は、
b=β^0=1h
に対応します。
問題は次で、
a=α^1=2hの場合は、
b=β^1=10hに変換するように、Aを設計しています。
つまり、
10h=A*2h
の関係を成立させています。
これでは、b=3h、つまり、
A*3h
がうまく行きません。
多分、α^1とβ^1を直接変換するのが、間違いだと思いますが、
どうすればいいでしょう?
No.1
- 回答日時:
何がしたいのか分からないのだけれども
GF((2^4)^2)とやらは
GF(2^4)の拡大体で
GF(2^8)のことですね。
それだと
もとのGF(2^8)と構造は全く同じで
生成元が違うだけですね。
すなわち
実質的に8次生成多項式の違いだけですから
xに対してx^-1をもとめるのに
GF(2^8)→GF(2^8)
の変換は余り意味はないように思います。
この回答への補足
何をしたいかは、例えば、
「A Systematic Evaluation of Compact Hardware Implementations
for the Rijndael S-Box」Nele Mentens他
を読んでいただけますか?検索で出てきます。多分。
テーブルを使わずにしかも極力簡単に逆元を求めたいのです。
ここでのp329のFig.3あたりの行列の求め方を知りたいのです。
No.2
- 回答日時:
No.1は撤回します。
まず元のGF(2^8)の生成多項式は
x^8+x^4+x^3+x^2+1
ですね?
参考サイトでは
x^8+x^4+x^3+x+1
になっていたのですがこれは原始多項式ではありませんね。
これを使ってもいいのですが原始多項式を使った方がいいでしょう。
次に
GF(2^4)の生成多項式は
x^4+x+1
ですね?
これは原始多項式です。
GF((2^4)^2)の生成多項式はGF(2^4)の生成元をαとしたとき
どのように選んだのでしょうか?
つまりp0,p1は?
この回答への補足
>GF((2^4)^2)の生成多項式はGF(2^4)の生成元をαとしたとき
>どのように選んだのでしょうか?
>つまりp0,p1は?
そのあたりは文献に書いていますし、考え方は、質問の中にも書いています。
あと、文献はあくまで参考文献で、GF(2^8)の生成多項式は、
x^8+x^4+x^3+x^2+1
を使っています。
ただ、Rijndael Encryptionでは、
x^8+x^4+x^3+x+1
が正解のようです。他の文献でもそうなっています。
その辺の違いがあるので、線形変換マトリックス
Aを求めなおしたいのですが。
現実には、
「Practical Implementation of Rijndael S-Box Using Combinational Logic」Edwin他
に添って、実装しています。
ハード的には、簡単な回路で、乗算や逆数演算ができます。
実際は、
GF(2^8)->GF(((2^2)^2)^2)に変換し、
演算をおこない、
GF(((2^2)^2)^2)->GF(2^8)
に戻します。
RS復号のように、加算、乗算、割り算が混在している場合はいちいちテーブルを引き直す必要がないので、ハードウエア化した場合は、動作速度が向上し、回路面積も小さくなります。
ポイントは、質問にも書いているように、
GF((2^4)^2)
での、β^1の考え方です。
β^1=10h
でいいのか?
No.3
- 回答日時:
GF(2^8)の生成多項式として
x^8+x^4+x^3+x^2+1
を使い
GF(2^4)の生成多項式として
x^4+x^+1
を使い
GF((2^4)^2)の生成多項式として
x^2+ax+b
(a,b∈GF(2^4))
を使うとすると
GF(2^4)の生成元βにより
a,bを表現し
βをGF(2^8)の生成元γにより表現する。
a,bを求めるときには
γ^8+γ^4+γ^3+γ^2+1=0
β^4+β+1=0
γ^2+aγ+b=0
であることを利用する。
a,bはそれぞれ15通りしかないので
かたっぱしから入れてみて上式を満たすものを求めれば良い。
存在が保証されているので一組は必ず有るので一組のみ求める。
C,PHPなどのプログラミングでやれば良いでしょう。
次にβをγの8次未満の多項式として表す。
すなわちfを7次多項式として
β=f(γ)
すると
β^0=1
β^1=f(γ)
β^2=f^2(γ)
β^3=f^3(γ)
γβ^0=γ
γβ^1=γf(γ)
γβ^2=γf^2(γ)
γβ^3=γf^3(γ)
なお、右辺はγ^8+γ^4+γ^3+γ^2+1=0を使いすべてγの7次以下の多項式にする。
すると
R=[γ^0 γ^1 γ^2 γ^3 γ^4 γ^5 γ^6 γ^7]^T
B=[β^0 β^1 β^2 β^3 γβ^0 γβ^1 γβ^2 γβ^3]^T
とおくと上記の関係式により求まるGF(2)上の8次正方行列Gによって
B=GR
とできる。
一方
GF(2)上の8次元行ベクトルx,yにより
xR=yB
ならば
xR=yGR
すなわち
x=yG
すなわち
y^T=(G^T)^-1x^T
結局
A=(G^T)^-1
とすればよい。
この回答への補足
わかりが悪くてすみません。
γ^2+aγ+b=0
で、
(a,b∈GF(2^4))
(γ∈GF(2^8))
の混合演算はどうするのでしょう?
No.4
- 回答日時:
もっとスマートに変更。
GF(2^8)の生成多項式として
x^8+x^4+x^3+x^2+1
を使い
GF(2^4)の生成多項式として
x^4+x+1
を使い
GF((2^4)^2)の生成多項式として
x^2+ax+b
(a,b∈GF(2^4))
を使うとし
GF(2^4)の生成元をβとし
GF(2^8)の生成元をγとする。
すると以下が成立する。
γ^8+γ^4+γ^3+γ^2+1=0…(1)
β^4+β+1=0…(2)
γ^2+aγ+b=0…(3)
fを7次以下多項式として
β=f(γ)
とし
(2)に代入して
f(γ)^4+f(γ)+1=0
これを(1)を使って7次以下のγの多項式にして
γのべき乗の係数を0としてfすなわちβをγの式として求める。
(未知数も式も8個なので求まる。)
同様に
g,hをそれぞれ3次以下の多項式として
a=g(f(γ))
b=h(f(γ))
として(3)に代入して
γ^2+g(f(γ))γ+h(f(γ))=0
これを(1)を使って7次以下のγの多項式にして
γのべき乗の係数を0としてgとhすなわちa,bをγの式として求める。
(未知数も式も8個なので求まる。)
そして
β^0=1
β^1=f(γ)
β^2=f^2(γ)
β^3=f^3(γ)
γβ^0=γ
γβ^1=γf(γ)
γβ^2=γf^2(γ)
γβ^3=γf^3(γ)
の式において
右辺を(1)を使いすべてγの7次以下の多項式にする。
すると
R=[γ^0 γ^1 γ^2 γ^3 γ^4 γ^5 γ^6 γ^7]^T
B=[β^0 β^1 β^2 β^3 γβ^0 γβ^1 γβ^2 γβ^3]^T
とおくと上記の関係式により求まるGF(2)上の8次正方行列Gによって
B=GR
とできる。
一方
GF(2)上の8次元行ベクトルx,yにより
xR=yB
ならば
xR=yGR
すなわち
x=yG
すなわち
y^T=(G^T)^-1x^T
結局
A=(G^T)^-1
とすればよい。
No.6
- 回答日時:
わかりやすくするために
GF(2^4)→GF((2^2)^2)
の場合にやってみます。
GF(2^4)の生成多項式として
x^4+x+1
を使い
GF(2^2)の生成多項式として
x^2+x+1
を使い
GF((2^2)^2)の生成多項式として
x^2+ax+b
(a,b∈GF(2^2))
を使うとし
GF(2^2)の生成元をαとし
GF(2^4)の生成元をβとする。
すると以下が成立する。
β^4+β+1=0…(1)
α^2+α+1=0…(2)
β^2+aβ+b=0…(3)
fを2次以下多項式として
α=f(γ):=α[3]β^3+α[2]β^2+α[1]β+α[0]
とし
(2)に代入して
f(γ)^4+f(γ)+1=0
これを(1)を使って3次以下のβの多項式にして
βのべき乗の係数を0としてfすなわちαをβの式として求める。
(未知数も式も4個なので求まる。)
×***********************
α[3]β^6+α[2]β^4+α[1]β^2+α[0]+α[3]β^3+α[2]β^2+α[1]β+α[0]+1=0
よって
(α[3]+α[1]+α[2])β^2+(α[2]+α[1])β+(α[2]+1)=0
よって
α[2]=1
α[2]=α[1]
α[3]+α[1]+α[2]=0
よって
α[0]=0
α[1]=1
α[2]=1
α[3]=0
とできる。
よって
α=β^2+β
************************
同様に
g,hをそれぞれ2次以下の多項式として
a=g(f(β)):=a[1]α+a[0]=a[1](β^2+β)+a[0]
b=h(f(β)):=b[1]α+b[0]=b[1](β^2+β)+b[0]
として(3)に代入して
β^2+g(f(β))β+h(f(β))=0
これを(1)を使って3次以下のβの多項式にして
βのべき乗の係数を0としてgとhすなわちa,bをβの式として求める。
(未知数も式も4個なので求まる。)
************************
β^2+(a[1](β^2+β)+a[0])β+b[1](β^2+β)+b[0]=0
よって
(a[1])β^3+(1+a[1]+b[1])β^2+(a[0]+b[1])β+(b[0])=0
a[1]=0
1+a[1]+b[1]=0
a[0]+b[1]=0
b[0]=0
よって
a[0]=1
a[1]=0
b[0]=0
b[1]=1
よって
a=1
b=α
よって
β^2+β+α=0
これは先に求めた式と同じ
************************
そして
α^0=1
α^1=β^2+β
βα^0=β
βα^1=β(β^2+β)=β^3+β^2
R=[β^0 β^1 β^2 β^3]^T
B=[α^0 α^1 βα^0 βα^1]^T
とおくと上記の関係式により求まるGF(2)上の4次正方行列Gによって
B=GR
とできる。
************************
G=
[1 0 0 0]
[0 1 1 0]
[0 1 0 0]
[0 0 1 1]
************************
一方
GF(2)上の4次元行ベクトルx,yにより
xR=yB
ならば
xR=yGR
すなわち
x=yG
すなわち
y^T=(G^T)^-1x^T
結局
A=(G^T)^-1
とすればよい。
************************
A=
[1 0 0 0]
[0 0 1 1]
[0 1 1 1]
[0 0 0 1]
************************
No.7
- 回答日時:
前回の編集ミスを修正
わかりやすくするために
GF(2^4)→GF((2^2)^2)
の場合にやってみます。
GF(2^4)の生成多項式として
x^4+x+1
を使い
GF(2^2)の生成多項式として
x^2+x+1
を使い
GF((2^2)^2)の生成多項式として
x^2+ax+b
(a,b∈GF(2^2))
を使うとし
GF(2^2)の生成元をαとし
GF(2^4)の生成元をβとする。
すると以下が成立する。
β^4+β+1=0…(1)
α^2+α+1=0…(2)
β^2+aβ+b=0…(3)
fを3次以下多項式として
α=f(β):=α[3]β^3+α[2]β^2+α[1]β+α[0]
とし
(2)に代入して
f(β)^2+f(β)+1=0
これを(1)を使って3次以下のβの多項式にして
βのべき乗の係数を0としてfすなわちαをβの式として求める。
(未知数も式も4個なので求まる。)
×***********************
α[3]β^6+α[2]β^4+α[1]β^2+α[0]+α[3]β^3+α[2]β^2+α[1]β+α[0]+1=0
よって
(α[3]+α[1]+α[2])β^2+(α[2]+α[1])β+(α[2]+1)=0
よって
α[2]=1
α[2]=α[1]
α[3]+α[1]+α[2]=0
よって
α[0]=0
α[1]=1
α[2]=1
α[3]=0
とできる。
よって
α=β^2+β
************************
同様に
g,hをそれぞれ2次以下の多項式として
a=g(f(β)):=a[1]α+a[0]=a[1](β^2+β)+a[0]
b=h(f(β)):=b[1]α+b[0]=b[1](β^2+β)+b[0]
として(3)に代入して
β^2+g(f(β))β+h(f(β))=0
これを(1)を使って3次以下のβの多項式にして
βのべき乗の係数を0としてgとhすなわちa,bをβの式として求める。
(未知数も式も4個なので求まる。)
************************
β^2+(a[1](β^2+β)+a[0])β+b[1](β^2+β)+b[0]=0
よって
(a[1])β^3+(1+a[1]+b[1])β^2+(a[0]+b[1])β+(b[0])=0
a[1]=0
1+a[1]+b[1]=0
a[0]+b[1]=0
b[0]=0
よって
a[0]=1
a[1]=0
b[0]=0
b[1]=1
よって
a=1
b=α
よって
β^2+β+α=0
これは先に求めた式と同じ
************************
そして
α^0=1
α^1=β^2+β
βα^0=β
βα^1=β(β^2+β)=β^3+β^2
R=[β^0 β^1 β^2 β^3]^T
B=[α^0 α^1 βα^0 βα^1]^T
とおくと上記の関係式により求まるGF(2)上の4次正方行列Gによって
B=GR
とできる。
************************
G=
[1 0 0 0]
[0 1 1 0]
[0 1 0 0]
[0 0 1 1]
************************
一方
GF(2)上の4次元行ベクトルx,yにより
xR=yB
ならば
xR=yGR
すなわち
x=yG
すなわち
y^T=(G^T)^-1x^T
結局
A=(G^T)^-1
とすればよい。
************************
A=
[1 0 0 0]
[0 0 1 1]
[0 1 1 1]
[0 0 0 1]
************************
No.8
- 回答日時:
>わかりが悪くてすみません。
>γ^2+aγ+b=0
>で、
>(a,b∈GF(2^4))
>(γ∈GF(2^8))
>の混合演算はどうするのでしょう?
無効になった古いバージョンのところに書いてあったので見落としました。
GF(2^8)はGF(2^4)の拡大体なので
GF(2^4)の元は拡大されたGF(2^8)に含まれる。
GF(2^8)は体GF(2^4)上の2次元ベクトル空間なのである。
No.9
- 回答日時:
【GF(2^4)→GF(2^8)】
GF(2)→GF(2^8)の生成多項式として
x^8+x^4+x^3+x^2+1
を使い
GF(2)→GF(2^4)の生成多項式として
x^4+x+1
を使い
GF(2^4)→GF(2^8)の生成多項式として
x^2+ax+b (a,b∈GF(2^4))
を使うとし
GF(2^4)の生成元をβとし
GF(2^8)の生成元をγとする。
すると以下が成立する。
γ^8+γ^4+γ^3+γ^2+1=0…(1)
β^4+β+1=0…(2)
γ^2+aγ+b=0…(3)
β=β[0]+β[1]γ+β[2]γ^2+β[3]γ^3+β[4]γ^4+β[5]γ^5+β[6]γ^6+β[7]γ^7
(β[0],β[1],β[2],β[3],β[4],β[5],β[6],β[7]∈GF(2))
とし
(2)に代入して(1)を使って7次以下のγの多項式にして
γのべき乗の係数を0としてβをγの式として求める。
β[1]=β[2]=β[5]=β[6]=0
β[3]=β[4]=β[7]=1
なおβ[0]=0とおく。(β[0]は任意に設定できる。)
よって
β=γ^3+γ^4+γ^7…(4)
同様に
a=a[0]+a[1]β+a[2]β^2+a[3]β^3 (a[0],a[1],a[2],a[3]∈GF(2))
b=b[0]+b[1]β+b[2]β^2+b[3]β^3 (b[0],b[1],b[2],b[3]∈GF(2))
とおき(1),(3),(4)に代入して
a[0],a[1],a[2],a[3],b[0],b[1],b[2],b[3]
を求めると
a[0]=a[1]=a[3]=b[0]=b[2]=b[3]=0
b[1]=a[2]=1
よって
a=β^2…(5)
b=β…(6)
(1),(4)を使い以下が分かる。
β^0=1
β^1=γ^3+γ^4+γ^7
β^2=γ+γ^2+γ^3+γ^6
β^3=γ+γ^3
γβ^0=γ
γβ^1=1+γ^2+γ^3+γ^5
γβ^2=γ^2+γ^3+γ^4+γ^7
γβ^3=γ^2+γ^4
R^T=[γ^0 γ^1 γ^2 γ^3 γ^4 γ^5 γ^6 γ^7]
B^T=[β^0 β^1 β^2 β^3 γβ^0 γβ^1 γβ^2 γβ^3]
G=
[1 0 0 0 0 0 0 0]
[0 0 0 1 1 0 0 1]
[0 1 1 1 0 0 1 0]
[0 1 0 1 0 0 0 0]
[0 1 0 0 0 0 0 0]
[1 0 1 1 0 1 0 0]
[0 0 1 1 1 0 0 1]
[0 0 1 0 1 0 0 0]
とおくと
B=GR…(7)
とできる。
一方
GF(2)上の8次元列ベクトルx,yにより
R^Tx=B^Ty
ならば(7)により
R^Tx=(GR)^Ty
すなわち
x=G^Ty
A=(G^T)^-1=
[1 0 0 0 0 1 0 0]
[0 0 1 0 1 1 1 0]
[0 0 0 0 0 0 1 0]
[0 0 0 1 0 1 1 1]
[0 1 0 1 0 1 0 1]
[0 0 0 0 0 1 0 0]
[0 0 1 0 1 1 1 1]
[0 0 0 0 1 0 0 1]
とおくと
y=Ax
【GF(2^2)→GF(2^4)】
GF(2)→GF(2^4)の生成多項式として
x^4+x+1
を使い
GF(2)→GF(2^2)の生成多項式として
x^2+x+1
を使い
GF(2^2)→GF(2^4)の生成多項式として
x^2+ax+b (a,b∈GF(2^2))
を使うとし
GF(2^2)の生成元をαとし
GF(2^4)の生成元をβとする。
すると以下が成立する。
β^4+β+1=0…(1)
α^2+α+1=0…(2)
β^2+aβ+b=0…(3)
α=α[0]+α[1]β+α[2]β^2+α[3]β^3 (α[0],α[1],α[2],α[3]∈GF(2))
とし
(2)に代入して(1)を使って3次以下のβの多項式にして
βのべき乗の係数を0としてαをβの式として求める。
α[0]=0
α[1]=1
α[2]=1
α[3]=0
なおα[0]=0とおく。(α[0]は任意に設定できる。)
よって
α=β^2+β…(4)
同様に
a=a[0]+a[1]α (a[0],a[1]∈GF(2))
b=b[0]+b[1]α (b[0],b[1]∈GF(2))
とおき(1),(3),(4)に代入して
a[0],a[1],b[0],b[1]
を求めると
a[0]=1
a[1]=0
b[0]=0
b[1]=1
よって
a=1…(5)
b=α…(6)
(1),(4)を使い以下が分かる。
α^0=1
α^1=β^2+β
βα^0=β
βα^1=β^3+β^2
R^T=[β^0 β^1 β^2 β^3]
B^T=[α^0 α^1 βα^0 βα^1]
G=
[1 0 0 0]
[0 1 1 0]
[0 1 0 0]
[0 0 1 1]
とおくと
B=GR…(7)
とできる。
一方
GF(2)上の4次元列ベクトルx,yにより
R^Tx=B^Ty
ならば(7)により
R^Tx=(GR)^Ty
すなわち
x=G^Ty
A=(G^T)^-1=
[1 0 0 0]
[0 0 1 1]
[0 1 1 1]
[0 0 0 1]
とおくと
y=Ax
No.10ベストアンサー
- 回答日時:
ω∈GF(2^8)
の逆数を求めてみる。
No.9の前段の変換により
ω=pγ+q p,q∈GF(2^4)
とする。
δ=p^2b+pqa+q^2 (∈GF(2^4))
と置くと
ω^-1=δ^-1pγ+δ^-1(pa+q)
ただし、a,bはそれぞれNo.9の前段のa,bである。
よってω^-1を求めるためにはGF(2^4)の元δの逆数が求まれば良い。
次に
δ∈GF(2^4)
の逆数を求めてみる。
No.9の後段の変換により
δ=p'β+q' (p',q'∈GF(2^2))
とする。
η=p'^2b'+p'q'a'+q'^2 (∈GF(2^2))
と置くと
δ^-1=η^-1p'β+η^-1(p'a'+q')
ただし、a',b'はそれぞれNo.9の後段のa,bである。
よってδ^-1を求めるためにはGF(2^2)の元ηの逆数が求まれば良い。
以上まとめて
ω^-1を求めるためにはGF(2^2)の元ηの逆数が求まれば良い。
GF(2^2)の非零元は3個しかないのでω^-1を求めるためにたった3個の小さな逆数テーブルを使えばよい。
おまけ:
γ^8=1+γ^2+γ^3+γ^4
γ^9=γ+γ^3+γ^4+γ^5
γ^10=γ^2+γ^4+γ^5+γ^6
γ^11=γ^3+γ^5+γ^6+γ^7
γ^12=1+γ^2+γ^3+γ^6+γ^7
γ^13=1+γ+γ^2+γ^7
γ^14=1+γ+γ^4
γ^15=γ+γ^2+γ^5
γ^16=γ^2+γ^3+γ^6
γ^17=γ^3+γ^4+γ^7
γ^18=1+γ^2+γ^3+γ^5
γ^19=γ+γ^3+γ^4+γ^6
γ^20=γ^2+γ^4+γ^5+γ^7
γ^21=1+γ^2+γ^4+γ^5+γ^6
γ^22=γ+γ^3+γ^5+γ^6+γ^7
γ^23=1+γ^3+γ^6+γ^7
γ^24=1+γ+γ^2+γ^3+γ^7
γ^25=1+γ
γ^26=γ+γ^2
γ^27=γ^2+γ^3
γ^28=γ^3+γ^4
γ^29=γ^4+γ^5
γ^30=γ^5+γ^6
γ^31=γ^6+γ^7
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) コマンドプロンプトでフォルダ内(デスクトップ)の複数PDFファイルの1ページ目だけを印刷したい 1 2022/09/11 23:33
- デスクトップパソコン ブルーレイ再生時にモニターが切り替わる 2 2022/11/04 05:18
- クラフト・工作 アクセサリー作りに詳しい方、教えていただけると幸いです。 2 2022/12/03 22:59
- 携帯型ゲーム機 ポケモンSV改造判定 4 2023/06/04 01:29
- モニター・ディスプレイ NVIDIA Geforce GT 710の解像度設定について教えて下さい 3 2022/06/19 13:00
- 車検・修理・メンテナンス パワーウィンドウのモーター故障、交換必須? 正規品は生産終了+在庫切れ 私が所有している以下の車両に 7 2023/05/26 19:59
- 留学・ワーキングホリデー 英文が読めない 2 2022/12/23 14:26
- 国産車 アルファード30系のGFとエグゼクティブのホイール、見分けつかないのワイだけ?? エグゼクティブや! 1 2023/07/11 02:02
- 化学 化学のエンタルピ変化を求め方について ある例題では各物質のモール数を換算して計算することもあり、ある 1 2022/06/20 23:22
- SQL Server SQL 期間内の実施数を合計したい 2 2023/03/03 22:28
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単項式と分数式の違いについて
-
(x+y+2z)(2x+3y-z)(4x-y-3z)を...
-
(x-1)(x-2)(x-3)の展開の...
-
多項式について質問です。 エク...
-
余次元って何?
-
約数と因数の違い(∈N)
-
データのノイズ除去法 - Savitz...
-
斉次とは?(漢字と意味)
-
(x+3)(x-3)(x^4+9x^2+81)の展開...
-
deg f?
-
(1+x)^n=1+nxについて
-
e^sinXの展開式について。。。
-
なぜ、2変数以上の多項式を因数...
-
0は偶関数?
-
問題が理解できません
-
CRCのアルゴリズムって、どんな...
-
(x-2)^5の展開しきの係数
-
原始多項式の求め方
-
( )でうしろのほう...
-
(X-a)(a+X) を展開するとど...
おすすめ情報