補題:SHA−1アルゴリズムを方程式にする

初期seedから日時を求める無謀な挑戦 - Plus Le Toolのための補題
使う記号の定義は[id:plusletool:20130427:p2]参照。

アルゴリズムは手順(過程)を記述したものであり、方程式は関係(結果)を記述したものである。
それらは記述の仕方が異なるので、詳しく議論するにはどちらかに統一するのがよい。
ここではアルゴリズムを方程式に書き換えることにする。

続きを読む

補題:任意のブール方程式の解き方

初期seedから日時を求める無謀な挑戦 - Plus Le Toolのための補題
使う記号の定義は[id:plusletool:20130427:p2]参照。

論理式(=ブール関数)の連立方程式の解き方。
ブール代数の方程式に関する資料はなぜかかなり少ないけど、ようやく見つけた。それも2つも。

続きを読む

補題:32bit符号なし整数変数間の演算をブール関数で表す

初期seedから日時を求める無謀な挑戦 - Plus Le Toolのための補題
使う記号の定義は[id:plusletool:20130427:p2]参照。

SHA−1アルゴリズムは32bit符号なし整数(uint型)間の演算で記述されているが、あえてそれを1bit整数(bool型)間の演算に書き換えることで、手がかりを得ようという試み。
最初に断っておくと、メモリ使用量的にも計算時間的にも明らかに無謀。でもやる。

続きを読む

補題:ブール関数について

初期seedから日時を求める無謀な挑戦 - Plus Le Toolのための補題

使う記号の定義は[id:plusletool:20130427:p2]参照。

【追記】
計算ミスを直したら、重要になるはずだったリード・マラー標準形がいらない子になった。
その結果、積和標準形とリード・マラー標準形との関係に記事の大部分を割いていたこの記事はほぼ無価値になったため、この記事は書き途中ですがお蔵入りになりました。

続きを読む

補題:数式中で使う記号の定義

初期seedから日時を求める無謀な挑戦 - Plus Le Toolのための補題
SHA−1の計算過程では、32bit符号なし整数(uint型)の論理積論理和排他的論理和,論理否定,算術和,循環シフト,および代入の演算が必要になるので、それらの記号をここで定義しておく。

続きを読む

PlusleSeedCalculator.Library.ResultDatum クラス

これはプラスルツールのプラグイン作者向けに書かれた記事です。
プラグインの使い方を知りたい方は[id:plusletool:20100918:howtouse]を参照。
プラグインの作り方を知りたい方は[id:plusletool:20100918:PluginManual]も参照。

出力結果を表すクラスです。
1つの ResultDatum インスタンスにつき、1つの小データを表します。

html出力の場合、各 ResultDatum インスタンスはspan要素で出力されます。

【定義】

public sealed class ResultDatum

ResultDatum コンストラク

ResultDatum クラスの新しいインスタンスを初期化します。
このコンストラクタで作られたインスタンスは、結果出力時、引数 text の文字列を表示します。

【定義】

public ResultDatum(
	string text
)

【パラメータ】

text
結果出力時に表示される文字列。

【使用例】

string text = "この文字列が表示されます。";
ResultDatum rd = new ResultDatum(text);
出力結果(html出力時)
<span>この文字列が表示されます。</span>

ResultDatum コンストラク

ResultDatum クラスの新しいインスタンスを初期化します。
このコンストラクタで作られたインスタンスは、結果出力時、引数 text の文字列を表示します。
html出力の場合、引数 classes の文字列コレクションがspan要素のクラス名になります。

【定義】

public ResultDatum(
	string text,
	IEnumerable<string> classes
)

【パラメータ】

text
結果出力時に表示される文字列。
classes
span要素のクラス名(クラス属性の属性値)。
※このパラメータは、html出力時のみ使用されます。

【使用例】

string text = "この文字列が表示されます。";
IEnumerable<string> classes = new string[] { "xxx", "yyy", "zzz" };
ResultDatum rd = new ResultDatum(text,classes);
出力結果(html出力時)
<span class='xxx yyy zzz'>この文字列が表示されます。</span>

ResultDatum コンストラク

ResultDatum クラスの新しいインスタンスを初期化します。
このコンストラクタで作られたインスタンスは、結果出力時、引数 text の文字列を表示します。
html出力の場合、引数 classes の文字列コレクションがspan要素のクラス名になり、引数 attributes の文字列コレクションがspan要素の属性になります。

【定義】

public ResultDatum(
	string text,
	IEnumerable<string> classes,
	IEnumerable<string> attributes
)

【パラメータ】

text
結果出力時に表示される文字列。
classes
span要素のクラス名(クラス属性の属性値)。
※このパラメータは、html出力時のみ使用されます。
attributes
span要素のクラス属性以外の属性(属性値と属性名の組)。
※このパラメータは、html出力時のみ使用されます。

【使用例】

string text = "この文字列が表示されます。";
IEnumerable<string> classes = new string[] { "xxx", "yyy", "zzz" };
IEnumerable<string> attributes = new string[] { "style='color:red'" };
ResultDatum rd = new ResultDatum(text,classes,attributes);
出力結果(html出力時)
<span class='xxx yyy zzz' style='color:red'>この文字列が表示されます。</span>