私は、WWW 上で AES 暗号化を実装するために、著者 Christophe Devine を掘り下げsha1.c
ています。md5.c
おそらく、ファイルはテスト サーバーとクライアントで同じです。ただし、キーの生成に使用される情報は同じですが、生成されたキーは異なります。
どちらの方法でも、計算の中心は にありxxx_process(...)
ます。両方で、ちょっとしたマクロ マジックが行われています。誰かがマクロを書く努力をするなら、それは何かをするべきだと思います。式が別のマクロへの入力として使用されるマクロ関数を書くのに時間がかかる場合は、決定論的な値に評価する必要があると思います。が に渡されたP(a,b,c,d,e,x)
ときに、への呼び出しで見たものではありません。私はこれを間違って読んでいますか?または、次の呼び出しで式に評価されませんか?R(t)
x
R(t)
P( B, C, D, E, A, R(19) );
#define P(a,b,c,d,e,x) \
{ \
e += S(a,5) + F(b,c,d) + K + x; b = S(b,30); \
}
#define R(t) \
( \
temp = W[(t - 3) & 0x0F] ^ W[(t - 8) & 0x0F] ^ \
W[(t - 14) & 0x0F] ^ W[ t & 0x0F], \
( W[t & 0x0F] = S(temp,1) ) \
)