問題タブ [galois-field]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - gf(eye(x)) 別名スパース行列のガロア体作成の高速化
ドキュメントから (通信ツールボックス)
x_gf = gf(x,m) は、行列 x からガロア体配列を作成します。ガロア体には 2^m 個の要素があり、m は 1 ~ 16 の整数です。
罰金。大きな行列の労力は、x の要素の数とともに大きくなります。すべての要素はある時点で「触れる」必要があるため、当然のことです。
残念ながら、これは gf(eye(n)) のコストが n の 2 次関数になることを意味します。そこにあるすべてのゼロから利益を得る方法はありますか?
PS:通常の m(:c)= [] 方法が機能しないため、gf-Matrix から行を削除するにはこれが必要です。
sse - PCLMULQDQ を使用した CRC32 の定数の計算
Intel Westmere と AMD Bulldozer で導入された PCLMULQDQ 命令を使用して CRC32 を効率的に実装する方法に関する次の論文を読んでいます。
V.ゴパルら。「PCLMULQDQ 命令を使用した汎用多項式の高速 CRC 計算」。http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf _
アルゴリズムは理解できましたが、定数 $k_i$ の計算方法がわかりません。たとえば、IEEE 802.3 多項式の定数値を提供します。
- k1 = x^(4*128+64) mod P(x) = 0x8833794C
- k4 = x^128 mod P(x) = 0xE8A45605
- mu = x^64 div P(x) = 0x104D101DF
等々。1 つの多項式のみをサポートする必要があるため、これらの定数を使用できますが、興味があります。これらの数値はどのように計算されたのでしょうか? 算術演算は GF(2) で行わなければならないため、典型的な bignum の実装 (Python が提供する実装など) だけを使用することはできません。
c - C言語のAES混合列ブロックのガロア体乗算
混合列ブロックでガロア体の乗算を行いながら、cを使用してAES暗号化プログラムに取り組んでいます。
元。[ https://crypto.stackexchange.com/questions/2402/how-to-solve-mixcolumns][1]
コード
仮定する
- d4×02 は d4<<1、1b との排他的論理和 (d4 の上位ビットがセットされているため)、正しい ans は b3 です。このコードを使用すると、1b3が得られます
- bf×03 は bf<<1 であり、1b (bf の上位ビットが設定されているため) と bf (3 を掛けているため) の排他的論理和であり、da を与えるはずです。しかし、コードの結果を使用すると1daです
上記の問題はmsbをマスクすることで解決されますが、次のコードのmixcolumnで使用すると、答えが正しくないように見えます.その一般的な行列演算は、乗算がガロア乗算に置き換えられ、XOR演算による加算が行われる場合のみです.
エラーの原因となっている可能性のある間違いを見つけることができますか...
arrays - Cシェル:標準入力の1行から複数の配列を作成する方法は?
C シェルを使用して次のタスクを完了する方法を見つける必要があります (別のシェルは使用できません)。
ガロア体計算を使用して、より大きな多項式から多項式係数を出力するプログラムがあります。出力は 1 行で、次のようになります (数字の実際の値には注意しないでください。ランダムに選んだので、数学的にはうまくいきません)。
多項式の計算方法では、係数が偶数になると、その係数は多項式の値に対して不要になります。1 を掛けるようなものです。私がする必要があるのは、多項式の因数を抽出し、余分な因数を取り除くことです。
sed を使用して、上記の式を次の形式に変更できました。
しかし、どうすればよいかわかりません。
上記を C シェル スクリプトに入力し、次の配列割り当てを行います。
次のように、最初に多項式の要素を別々の行に分けるのが最善の方法だと思います。
しかし、これを行う方法がわかりません。
誰でも役立つヘルプやヒントを提供できますか? 多項式の係数の数は変更されることに注意してください。ただし、8 を超えることはないと思います。指数の値は重要ではありません。偶数か奇数かを判断するだけです。それらが変数または配列に割り当てられている場合、私はそれを簡単に行うことができます。単一因子の最大可能サイズは、おそらく括弧内の個体数約 50 です。
java - Java または C 配列の乗法逆数表 GF(2^4)
GF (2 4 )の乗法逆数のテーブル ルックアップを作成する必要があります。私はすでに掛け算の九九を書きましたが、それを再び行うことを楽しみにしていません. これが私が例として書いた表です。誰もこれを二度と書く必要がないことを願っています。私はばかだと感じました。
GF (2 4 )上の乗算表
逆子はもうやりたくない!
コピーと貼り付けに適したテーブル (できれば Java または C 16x16 配列) を知っている人はいますか? すでに書かれているものを見つけようとしてgithubを検索しましたが、喜びはありませんでした。
動機/合理性
テーブルのルックアップを厳密に行う必要はありませんが、その場でフィールドを生成するためだけに 100 行のコードを追加したくありません (これは単なる見積もりですが、できるとは思えません)より少ない時間でそれを行います)。
algorithm - ガロア体での高速行列べき乗計算
ガロア体 2 ( GF(2) )で行列 A のべき乗を計算する高速な方法を探しています。A
は double 行列であり、そのべき乗は でx
表されます
A
簡単な方法は、 GF(2)に変換し (与えられた行列A
が double 行列であるため)、累乗演算を実行することです。Matlab コード
A
ただし、この方法では行列を GF(2)に変換するのに時間がかかります。GF(2) 変換なしで高速な方法を探しています。つまり、mod操作を使用しています
ただし、問題は、最初の方法と 2 番目の方法の結果が似ていないことです。問題は、数のオーバーフローです。一部のメンバーは、行列A
を int64 に変換することを提案してくれました。しかし、私の問題を処理するのは良い方法ではないと思います。matlabでそれを行うための迅速な方法を私に提案してもらえますか? 前もって感謝します
これは簡単な例です
最初の方法は、
結果:
第二の方法
A^x
最初の方法で同様の結果が得られるGF(2)に変換せずに計算を高速化する方法は?