これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドハッシュキャッシュです。
プログラム:
NAME
hashcash-hashcashスパム対策/サービス拒否対策ツール
SYNOPSIS
ミント (作成) 切手:
ハッシュキャッシュ -m [[ オプション ] [ リソースを追加する。 ...] ...]
チェック 切手:
ハッシュキャッシュ -c [[ オプション ] -r リソースを追加する。 ...] [ スタンプ ...]
速度 見積り:
ハッシュキャッシュ -s [ オプション ] [ -b ビット ]
データベース:
ハッシュキャッシュ -p 今 [ -j リソースを追加する。 ] [ -k ] [ -t 時間 ] [ -u ]
数量カウント 衝突 ビット:
ハッシュキャッシュ -w [ オプション ] [ スタンプ ...]
以上 リソースを追加する。 名前:
ハッシュキャッシュ -n [ オプション ] [ スタンプ ...]
以上 時間 残り まで 満了
ハッシュキャッシュ -l [ オプション ] -e 期間 [ スタンプ ...]
DESCRIPTION
Hashcashは、サービス拒否対策ツールです。 その主な現在の用途は、
hashcashユーザーは、コンテンツベースおよびブラックリストベースのスパム対策による電子メールの損失を回避します
システム。
ハッシュキャッシュツールを使用すると、送信する電子メールに添付するハッシュキャッシュスタンプを作成できます。
受信したメールに添付されているハッシュキャッシュスタンプを確認します。 メール送信者はハッシュキャッシュを添付します
X-Hashcash:ヘッダー付きのスタンプ。 スパム対策ツールのベンダーと作成者をお勧めします
ハッシュキャッシュで送信されたメールをブラックリストとコンテンツベースのフィルタリングルールから除外します。
ハッシュキャッシュスタンプは、パラメータ化可能な量の作業を必要とする作業証明を構成します
送信者のために計算します。 受信者は、受信したスタンプを効率的に確認できます。
ハッシュキャッシュのプルーフオブワーク機能は、部分的なハッシュ衝突(SHA1ハッシュ)を計算することです。
関数が使用されます)。 衝突のビット数を選択することにより、
衝突を計算すると、任意のコストがかかる可能性があります-数分のXNUMX秒から
分または時間。 検証は効率的であり、同じ小さなコストが必要です。
衝突サイズ。
他のアプリケーションの詳細については、ハッシュキャッシュが使用されています。
http://www.hashcash.org/
USAGE 注意事項
このマニュアルページでは、リソース名はサービスの名前またはスタンプのアドレスです
のために作成されました。 メールの場合、リソース名は受信者のメールアドレスです。
フォーム [メール保護].
鋳造 スタンプ
当学校区の -m スタンプを作成するにはフラグを付ける必要があります。
スタンプを作成するためのリソース名(受信者のメールアドレス)は、次のように渡すことができます。
引数、または省略された場合はstdinから読み取られます。 stdinがttyの場合、ユーザーにプロンプトが表示されます。
stdinはパイプであり、リソース名はサイレントに読み取られます。 希望する衝突サイズは
-bオプションで指定します。 衝突サイズが指定されていない場合、デフォルトは20です。
ビット。 も参照してください -b デフォルト オプションを選択します。
チェック スタンプ
当学校区の -c スタンプの有効期限を確認するには、フラグを付ける必要があります。 チェックするスタンプは、
「ハッシュキャッシュ」への引数。 スタンプが与えられていない場合、スタンプはstdinから読み取られます。 stdinが
stdinがパイプの場合、スタンプは黙って読み取られます。 A
リソース名(受信者の電子メールアドレス)は、 -r オプション。 もし
リソース名が指定されている場合、リソース名はスタンプ内のリソース名と比較されます。
それらが一致しない場合、スタンプは拒否されます。
注:リソース名が指定されていない場合は、スタンプがチェックされ、そうでないかどうかが確認されます。
有効ですが、別のリソース用に作成することができます。これにより、スタンプを使用できるようになります。
異なるリソース間で再利用されるため、hashcashは終了時にチェックされていない終了コードを返します。
スタンプはデフォルトで28日間有効と見なされます。 有効期間は
を使用して変更 -e フラグ。
スタンプの有効期限が切れているか、将来の日付がある場合、スタンプは拒否され、プログラムは拒否されます
すぐに終了します。
必要な衝突サイズが -b フラグ、スタンプ値が計算され、
比較すると、スタンプの値が不十分な場合、スタンプは拒否され、プログラムは終了します。
すぐに。 の場合 -b フラグが与えられていない場合、スタンプはそうでないかどうかを確認するためにチェックされます
有効ですが、hashcashは終了時にチェックされていない終了コードを返します。
スタンプがXNUMX回使用された場合、スタンプは拒否されます。 二重支払いの保護は
以下の「二重支払い保護」で詳しく説明します。 二重支払いの場合
保護が有効になっていない場合、スタンプが二重に使用される可能性があるため、ハッシュキャッシュが返されます
終了時にチェックされていない終了コード(終了コード2)。
当学校区の -w フラグを使用して、衝突のビット数をカウントするように要求できます
と表示されます。 The -n フラグを使用して、スタンプのリソース名が
解析されて表示されます。 The -l フラグを使用して、までの秒数を要求できます
スタンプの有効期限が出力されます。
プログラムは、有効または無効な終了コードを返すのは、 -c フラグが使用され、 -b
フラグが使用され、 -d, -r リソースを追加する。 使用されています。 これらは、以下に必要なオプションの最小セットです。
スタンプの有効性を十分に確認してください。 これらの基準が満たされない場合、プログラムは
終了時にチェックされていない終了コード(終了コード2)を返します。 (も参照してください -y 国旗。)
ダブル 支出 保護
Status -d スタンプをチェックするときにフラグが使用され、使用済みスタンプのデータベースが保持されます。
デフォルトでは、スタンプは28日後に有効期限が切れますが、有効期限がないとデータベースは大きくなります
無期限に。 代替の有効期限を指定できます -e 国旗。 NS
電子メールの推奨(およびデフォルト)有効期限は28日です。 有効期限後
時間の長さ、スタンプはとにかく期限切れと見なされ、データベースから削除される可能性があります
スペースを節約します。 (スタンプをパージする方法については、「定期的なパージと次のアクセス時のパージ」を参照してください。)
効率上の理由から、スタンプはデータベースでチェックされる前に検証されます。 もしそれが
それ以外の場合は無効で、データベースアクティビティは発生しません。
注:スタンプが有効であると見なされる期間についての決定は、
ベリファイア。 短すぎる場合、一部のアプリケーションではスタンプが
受信者に到着する前に期限切れになります(たとえば、電子メールで)。28日の推奨値
通常の電子メール配信の遅延に対して安全である必要があります。 選択は、間のトレードオフです。
データベースのサイズと到着前の有効期限のリスク。アプリケーションによって異なります。
注:同じデータベース内の異なるスタンプは、異なる有効期間を持つ可能性があるため、
有効期間が異なるさまざまなリソースのスタンプの例は、次の場所に保存できます。
同じデータベース、または受信者が将来のスタンプの有効期間を変更する可能性があります
古い切手の有効性に影響を与えることなく。
パージ 定期的に vs on 次へ アクセス
スタンプの確認中に古いスタンプを定期的に削除するには、 -p 期間 パージするオプション
最後のパージから指定された期間より早く。 パージは、
-k 有効期限が切れていないスタンプもパージするオプション、および -j リソースを追加する。 パージするフラグのみ
指定されたリソースのスタンプ。
次のアクセスでスタンプをパージするのが不便な場合がありますが、
たとえば、パージに時間がかかる大規模な二重支払いデータベースがある場合、
ハッシュキャッシュチェッカーの応答時間は重要です。 この問題を回避するには、パージします
だけを使用して個別に行うことができます -p 今 パージ操作のみを要求するオプション。
たとえばUNIXでは、cronジョブで「hashcash-pnow」をXNUMX日XNUMX回、または
ディスクが不足しているときの需要。
速度 見積もり
当学校区の -s フラグは、XNUMX秒間にテストできる衝突の数の測定を要求します。 番号
スタンプが作成または検証されます。
Status -b フラグはこのオプションで使用され、代わりに何秒になるかを推定します
ビット単位で指定されたサイズのスタンプを作成するために取得します。 どれくらいの時間を知るために
デフォルトサイズのスタンプの使用をミントするのにかかります -s -b デフォルト.
Notes
すべての情報出力はstderrに出力されます。 切手と切手の結果
検証とタイミングはstdoutに印刷されます。 静かな旗 -q すべてを抑制します
情報出力。 The -v フラグは、より多くの情報出力を要求します。 要求された
出力。クワイエットモードで出力される唯一の情報です( -q 指定)
標準出力に印刷されます。 stdoutがパイプの場合、またはクワイエットモードが有効な場合
出力は説明なしで出力されます(つまり、ビット、秒、リソースのみ)。
OPTIONS
-c 引数またはstdinで指定されたスタンプの有効期限情報を確認してください。 (と一緒に使用
-b, -d -r リソースを追加する。 スタンプを完全にチェックするため)。
-m 引数またはstdinで指定されたリソースを使用したミントスタンプ。
-b ビット
スタンプを作成するときは、少なくともこの数のビットの衝突を作成します。 確認する場合
スタンプでは、少なくともこの数のビットの衝突がある必要があります。それ以外の場合は拒否します
それ。 省略した場合、デフォルトが使用されます。
スタンプをチェックするときは、スタンプにこれだけのビットが必要です。
デフォルトのビット数は、次のコマンドで指定できます。 -b デフォルト。 に関連するビット
デフォルトはで指定することもできます -b +n デフォルトよりnビット多い場合 -b -n
デフォルトよりnビット少ない場合。
-b デフォルト, -b +0 -b -0 すべて同等です。
スピードテストを行うとき -s、デフォルトトークンの速度を測定することができます -s -b
デフォルト.
-r リソースを追加する。
スタンプを作成する場合、スタンプを作成するためのリソース名(受信者のメールアドレス)
に対して与えることができます -r リソースを追加する。 または「ハッシュキャッシュ」への引数として。
スタンプをチェックするとき、リソース名(あなた自身のメールアドレス)は -r
オプション。 リソース名が指定されている場合は、リソース名と照合されます。
スタンプ、およびそれらが一致しない場合、スタンプは拒否されます。 リソース名が
与えられていない場合、他のリソースのスタンプが受け入れられるため、ハッシュキャッシュ
終了時にチェックされていない終了コード(終了コード2)を返します。
-o スタンプを検証するとき、複数のリソースを与えることができます。 デフォルトでは、リソースは
一致する有効なリソースが見つかるまで、XNUMXつずつチェックします。 しかし、あなたが
ワイルドカードまたは正規表現を使用します(を参照) -E)、それを指定できると便利です
XNUMXつのリソースが別のリソースをオーバーライドします。 例:これ: -b15 -r [メール保護] -o -b10
* @ dev.null そのメールをアドレスに [メール保護] 15ビットが必要ですが、
* @ dev.null 必要なのは10ビットだけです。 省略した場合 -o 間の関係をオーバーライドする
10つのリソースでは、アドレスにXNUMXビットのスタンプが受け入れられます [メール保護]
最初のルールではビットが不十分であるとして拒否されますが、
それは第2の規則の下で受け入れられるでしょう。 The -o オプションを使用すると、この問題を回避できます。
-e 時間
使用済み切手の有効期限。 スタンプをチェックしながら( -c フラグ)、
スタンプが指定された時間より前に作成された場合、期限切れと見なされます。
このオプションを使用しない場合、デフォルトでは、スタンプは28日後に期限切れになります。 有効期限
デフォルトでは秒単位で指定されます(引数0は永久を意味します)。 XNUMX文字
接尾辞を使用して、代替単位を指定できます(m =分、h =時間、d =日、M =
月、y = Y =年、s =秒)。
と一緒に使用する場合 -d オプション、使用済み印紙とその有効期限は、
データベース。 を参照してください -p データベースからスタンプを削除する方法を説明するオプション。
切手を鋳造している間、 -e フラグは、作成された時間の解像度に影響を与える可能性があります
スタンプで。 なし -e オプションの場合、デフォルトの解像度は日数です(時間形式:
YYMMDD)。 有効期限の範囲に基づく代替形式は次のとおりです。
鋳造中に、明示的な時間幅を指定することもできます -z 代わりにオプション。
(-z オーバーライド -e 両方が与えられた場合。 どちらも指定されていない場合、デフォルトは6文字です(時間
フォーマット:YYMMDD))。
から適切な時間幅を自動的に決定するためのルール -e いいえの場合 -z オプション
与えられている:
*期間> = 2年の場合、時間形式YYは最も近い年に切り捨てられて使用されます
始める;
* 2年<期間<= 2か月の場合、時間形式YYMMは切り捨てられて使用されます。
最も近い月の開始;
* 2か月<期間<= 2日の場合、時間形式YYMMDDは切り捨てられて使用されます。
最も近い日の始まり。
* 2日<期間<= 2分、時間形式YYMMDDhhmmは切り捨てられて使用されます
最も近い分の始まり。
*期間<2分、時間形式YYMMDDhhmmssが秒単位で使用されます。
切り捨ては、現地時間ではなくUTC時間に基づいていることに注意してください。 これはにつながる可能性があります
GMT以外のタイムゾーンの日数などに切り捨てると、最初は驚くべき結果になります
(UTC = GMT)。 を使用すると理解しやすくなる場合があります -u オプションを選択します。
-z 幅
当学校区の -z オプションはミンティング中に使用するためのものであり、ユーザーが時間幅の幅を選択できるようにします
分野。 も参照してください -e と組み合わせて与えられるオプション -m 暗黙的に指定する
の説明の下にある時間フィールドの幅 -e 国旗。 有効な幅は6,10、12、またはXNUMXです。
それぞれに対応する文字:YYMMDD、YYMMDDhhmm、およびYYMMDDhhmmssは切り捨てられます
それぞれ最も近い日または分に。
切り捨ては、現地時間ではなくUTC時間に基づいていることに注意してください。 これはにつながる可能性があります
GMT以外のタイムゾーンの日数などに切り捨てると、最初は驚くべき結果になります
(UTC = GMT)。 を使用すると理解しやすくなる場合があります -u オプションを選択します。
-g 期間
当学校区の -g オプションは、ハッシュキャッシュスタンプをチェックするときに使用します -c オプション
クロックスキューの猶予期間を指定します。つまり、ハッシュキャッシュスタンプが日付とともに到着した場合
将来または過去に、未来の日付があるとして(または
これよりも未来的である(またはより長く期限切れになっている)場合を除いて、期限切れになります)
限目。 デフォルトは2日です。これは、送信システムのクロックが
受信システムの時計の2日以内(または2日遅れ)、
ハッシュキャッシュスタンプは引き続き受け付けられます。
猶予期間のデフォルトの単位は秒です。 XNUMX文字のサフィックスを使用できます
代替単位を指定するには(m =分、h =時間、d =日、M =月、y = Y =
年、およびs =秒)。
-d 二重支払いデータベースに切手を保存します。 スタンプが前に見られた場合は
それ以外の場合は有効であっても拒否されます。 デフォルトのデータベースファイルは データベース.sdb in
現在のディレクトリ。 それ以外の場合は有効なスタンプのみがデータベースに保存されます。
完全に検証されたスタンプのみがデータベースに保存されます。 -y オプションがある
与えられた。
-f データベース名
データベース名 二重支払いデータベースのデフォルトのファイル名の代わりに。
-p 期間
指定された期間が経過した場合、期限切れのスタンプのデータベースをパージします。
前回パージされたとき。 便宜上 -p 今 に相当します -p 0 どちらも
データベースが最後にパージされた日時に関係なく、今すぐパージすることを意味します。
と組み合わせて使用する場合 -j リソースを追加する。 指定されたリソース用に作成されたスタンプのみ
パージされます。
と組み合わせて使用する場合 -k 有効期限が切れていないスタンプもすべてパージされます。 することができます
と組み合わせて使用 -t 時間 現在の時刻が指定された時刻であるかのように期限切れになります。
-k オプションで使用 -p 期限切れのスタンプだけでなく、すべてのスタンプを削除するように要求します。
-j リソースを追加する。
オプションで使用 -p 指定されたリソース名に一致するスタンプだけを要求するには
期限切れのスタンプをすべてパージするデフォルトではなく、パージされます。 の場合
リソース名は空の文字列であり、すべてのスタンプが一致します(これは
省略 -j オプション)。
注意してください -E, -M -S 一致フラグのタイプは、で指定されたリソースにも適用されます。 -j
リソースを追加する。 フラグ。
-s タイミング情報のみを印刷し、スタンプの作成に進まないでください。 と組み合わせる場合
-b ビット 要求された衝突サイズにかかる時間のフラグ印刷見積もり
計算する場合 -s 単独で与えられ、衝突ファインダーの速度を出力するだけです。 印刷する
デフォルトのビット数が使用される時間の見積もり -b デフォルト.
-h 短い使用情報を印刷します。
-v スタンプの作成または検証に関するより詳細な情報出力を印刷します。 (もしも
-vが唯一の引数であり、ツールのバージョン番号を出力します。)
-V ツールのバージョン番号を出力します。
-q バッチモード。 出力以外の情報は出力しません。 このオプションは、 -v
オプションを選択します。
-X ミントするとき、スタンプの前にハッシュキャッシュ電子メールXヘッダー 'X-Hashcash:'を印刷します。
このオプションがないと、裸のスタンプだけが印刷されます。
チェックするとき、引数として指定されたスタンプをスキャンした後、stdinをスキャンして行を探します
文字列 'X-Hashcash:'で始まり、一致する行の残りを
スタンプ。 最初の空白行までの行と最後の行のみがスキャンされます(「
-i これをオーバーライドするために使用できるフラグ)。 空白行は、
メールメッセージまたはUSENET記事の本文からヘッダーを分離します。 これは意味します
メールメッセージまたはUSENET記事をstdinのハッシュキャッシュにパイプするのに便利です。
-x
名前と値のセットで構成される拡張文字列。 拡張子の形式について説明します
以下のハッシュキャッシュスタンプ形式のセクション。 これにより、ユーザーは自分の
スタンプにハッシュされ、受信者によって検証された独自のスタンプ拡張子
それらをサポートし、それらをサポートしない受信者によって無視されます。 拡張子に注意してください
フックメカニズムはまだ実装されていません。 これは、次のリリースで提供されます。
-i 確認して使用する場合 -X フラグ、ヘッダー間の空白行の境界を無視します
メッセージの本文、および本文の衝突が見つからない場合は、本文の衝突もチェックします
ヘッダーで。
-t 時間
現在の時刻が、スタンプを作成し、確認するために指定された時刻であると偽ります。
スタンプとデータベースからの古いスタンプの削除。 時間はに基づく形式で与えられます
UTCTIME形式YYMMDD [hhmm [ss]]。
デフォルトでは、時刻は現地時間で表されます。 で使用 -u UTCで時間を与えるフラグ
(GMT)。
引数の前に+を付けることで、現在の時刻を基準にした時刻を指定することもできます。
また -。 相対時間のデフォルトの単位は秒です。 XNUMX文字の接尾辞は
代替単位を指定するために使用されます(m =分、h =時間、d =日、M =月、y =
Y =年、s =秒)。
注:時間が現地時間で表されている場合、夏時間が
タイムゾーン、からの変更時にXNUMX年にXNUMX〜XNUMX時間のあいまいな時間があります
夏時間から通常の時間まで。
-u 現地時間ではなくUTC(GMT)での入力および出力の絶対時間。
-a 期間
前の現在の時刻からランダムな値を加算(または数値が負の場合は減算)
スタンプを鋳造します。 これにより、スタンプが作成された時刻が非表示になります。
匿名ユーザー。 ランダムな時間を(減算するのではなく)加算すると、次の場合にリスクが生じる可能性があることに注意してください。
受信者がスタンプを拒否するため、スタンプが到着するまでに追加された時間よりも短くなります
将来的にはタイムスタンプ付き。
-n 検証中のスタンプから解析されたリソース名を出力します。 チェックされていない終了コードを返します
出口。
-l スタンプの有効期限が切れるまでの残り秒数を印刷します。 チェックされていない終了コードを返します
出口。
注:計算には猶予期間が含まれるため、最大2倍の猶予期間になる可能性があります
他の方法で予想されるよりも長くなります(クロックは高速ですが、システムはそれが可能であると推定する必要があります
遅くなる)。 猶予期間を除外する場合は、 -g0 猶予期間を0に設定します
計算のために。
-w スタンプの衝突ビット数を出力します。 終了時にチェックされていない終了コードを返します。
-y スタンプが完全にチェックされていなくても有効な場合は、成功を返します。 で使用 -c
すべてではないところ -d, -r 有効であるが部分的に成功終了コードを取得するように指定されている
チェックスタンプ。 同様にで使用することができます -n, -l, -w 同じ効果で。
-M スタンプをチェックするときは、ワイルドカードを許可してください * リソース名を一致させて作成します
複数の電子メールアドレスを指定し、キャッチオールアドレスを一致させることがより簡単になります
およびサブドメインを含むアドレス。 これがデフォルトです。 も参照してください -S, -E -C
-S スタンプをチェックするときは、単純なテキスト比較を使用して、リソース名を
スタンプ。 も参照してください -M, -E -C.
-E スタンプをチェックするときは、正規表現を使用してリソース名を指定して作成します
複数の電子メールアドレス、キャッチオールアドレス、拡張子のクラスを指定する方が簡単
アドレスとサブドメインを含むアドレス。 正規表現の構文はPOSIXであることに注意してください
スタイル:特殊文字は、特別な意味を持つために引用符で囲む必要はありません。 しかし
検索された文字列のその文字に\を付けて引用符で囲む必要があります。 The
正規表現では、最初に^が自動的に追加され、最後に$が追加されます。
指定されていない場合。 特殊文字^は、の先頭に一致します
リソース、および$はリソースの終わりに一致します。
(BSD正規表現でコンパイルされている場合でも、POSIXスタイルの構文が使用されていることに注意してください。
BSD正規表現は範囲{}をサポートしていないことに注意してください。)
-C デフォルトでは、リソースはミンティングとチェックで小文字に正規化されます。 The
-C フラグはこれをオーバーライドして、リソースがチェックで大文字と小文字を区別するものとして扱われるようにします。
造幣では正規化されていません。
-P 進捗情報(反復回数、予想される反復、完了率、最良)を印刷します
これまでに見つかったスタンプサイズ)。
-O
その番号のハッシュキャッシュコアを選択します。 現在、0〜9が有効なコアです。 すべてのコアではありません
すべてのアーキテクチャで動作します。 たとえば、一部はx86固有のアセンブラであり、その他はPPC固有です。
アセンブラ。 コアが有効でない場合、ハッシュキャッシュは失敗を返し、何を説明します
起こった。
-Z n
スタンプを圧縮します。 これは、時間とスペースのトレードオフです。 スタンプが大きいほど高速ですが、
おそらく少し醜い。 最速のスタンプ(デフォルト)の場合は、-Z0を使用します。 部分的に
圧縮されたスタンプは-Z1を使用します。 非常に圧縮されているが、やや遅いスタンプの場合は、-Z2を使用します。
(注:最近発見されたバグのため、修正できるまで、-Z2は今のところ-Z1と同じです
それ。)
例
作成 スタンプ
「ハッシュキャッシュ-s」
マシンがXNUMX秒間に試行できる衝突の数に関するタイミング情報を出力します。
「ハッシュキャッシュ-sv」
さまざまなプロセッサ固有のミンティングのより正確ですが非常に遅いベンチマーク
コア。
「hashcash-s-bdefault」
マシンがデフォルトサイズの衝突を計算するのにかかる時間を印刷します(ただし、
実際に衝突を計算しないでください)。
「ハッシュキャッシュ-s-b32」
マシンが32ビット衝突を計算するのにかかる時間を印刷します(ただし、印刷しないでください)
実際に衝突を計算します)。
「ハッシュキャッシュ-m」
スタンプをミントします。 デフォルト値(の数)でリソース名とミントの入力を求めます
衝突ビット)。
「hashcash-mfoo」
リソースfooの衝突を計算します。 デフォルト値(衝突の数)でミントします
ビット)。
"hashcash -m foo -b 10"
リソースfooで10ビットの衝突を計算します。
「ハッシュキャッシュ-a-3d」
スタンプの作成時刻から0日から3日のランダムな時刻を引きます。
これは、タイミング相関のリスクを減らすためにmixmasterが使用するのと同じファズファクターです。
調べる スタンプス
"hashcash -w 1:24:040806:foo::511801694b4cd6b0:1e7297a"
スタンプの値(衝突のビット数)を報告します。 例は
24ビットの衝突。25GhzP3で作成するには平均4秒かかります。
"hashcash -mq-b10foo⎪hashcash-w"
バッチモードでスタンプを作成し、stdinのhashcashに渡して確認し、印刷方法を確認します
多くのビットがありました。
"hashcash -n 1:24:040806:foo::511801694b4cd6b0:1e7297a"
スタンプからリソース名を報告します。 この例のリソース名はfooです。
"hashcash -l -e 30y 1:24:040806:foo::511801694b4cd6b0:1e7297a"
スタンプが作成されてから30年以内に期限切れになった場合、スタンプが期限切れになるまでの期間を報告します
日にち。 (日付が遠すぎて、2038年のエポックの終わりに達することに注意してください。
y2kバグのUNIX時間アナログ)。
検証中 スタンプス
"hashcash -c 1:24:040806:foo::511801694b4cd6b0:1e7297a"
スタンプが有効か確認してください。 二重支払いでスタンプをチェックしていないことに注意してください
データベースであり、リソース名または必要な衝突ビット数を指定していません
ハッシュキャッシュはスタンプが完全にチェックされていないと見なし、有効であると報告します
ただし、完全にチェックされていないか、スタンプに問題がある場合は無効です。
"hashcash -c -b24 1:24:040806:foo::511801694b4cd6b0:1e7297a"
スタンプの値が24ビット以上であることを確認してください。 この例には24があります
ビット値。 要求されたビット数を増やすか、スタンプをXNUMXつに置き換える場合
24ビット未満の衝突では、スタンプは拒否されます。
"hashcash -c -b24 -r foo 1:24:040806:foo :: 511801694b4cd6b0:1e7297a"
上記のように、スタンプに十分な値があるかどうかを確認しますが、さらに、
指定されたリソース名は、スタンプのリソース名と一致します。
ダブル 支出 安全防災
「スタンプの確認」に記載されている例は、二重支払いデータベースを維持するように変更できます
同じスタンプがXNUMX回受け入れられないようにします。 スタンプはチェックインされるだけであることに注意してください
それ以外の場合は有効で完全にチェックされている場合は、データベースに追加されます(必要な数の
衝突のビットが指定され、リソースが指定されています)。
"hashcash -cd -b 10 -r foo 1:24:040806:foo :: 511801694b4cd6b0:1e7297a"
スタンプを確認し、有効な場合はXNUMX倍の使用済みデータベースに追加します(正しいリソースがあります)
名前と十分な値)。
"hashcash -cd -b 10 -r foo 1:24:040806:foo :: 511801694b4cd6b0:1e7297a"
スタンプを二重に使うようにしてください。 二重使用として拒否されます。
スタンプ 有効期限
二重支払いデータベースが無期限に大きくなるのを防ぐために、受信者はそれを要求できます
切手は指定された期間より古くはありません。 有効期限が切れた後、古い切手はからドロップすることができます
二重支払いデータベースは不要になるため、期限切れの切手は拒否できます
純粋に古い日付に基づいているので、二重支払いで期限切れの切手が占めるスペース
データベースは、有効期限が切れていても有効なスタンプを受け入れるリスクなしに保存できます。
スタンプの1番目のフィールドは、1970年XNUMX月XNUMX日以降のUTC時刻です。デフォルトの時刻
形式はYYMMDDで、時刻は最も近い日に切り捨てられます。 デフォルトの有効期間は28です
日。
代替の有効期間を提供することができます -e オプションを選択します。
"hashcash -cd -b 10 -e 2d -r foo 1:24:040806:foo :: 511801694b4cd6b0:1e7297a"
古いスタンプを確認してみてください。上記のスタンプは11年2002月XNUMX日に作成されました。
オプションを与えました -e 2d そのため、スタンプの有効期限は作成後2日で、現在は
過去インチ
注:作成時間がスタンプで日数で表されている場合、正確な作成
日付は、UTC時間で指定された日の始まりです(代替単位の場合も同様)
作成時間は、それが表現されている単位の先頭に切り捨てられます)。
たとえば、日単位の単位の場合、これはタイムゾーンによっては
スタンプは、指定された有効期限(日数)の下で無効と見なされるようです
計算はに基づいているので、それが何日であるかについてのあなたの相対的な見方と比較して
現在の時刻はUTCで、スタンプの作成時刻はUTC時刻で表されます。
"hashcash -cd -b 10 -r foo 1:24:040806:foo :: 511801694b4cd6b0:1e7297a"
有効期限が切れていることを除いて、スタンプが他の方法で有効かどうかをテストします。 省略 -e
スタンプが期限切れになることはないことをハッシュキャッシュに通知します。 永久の有効期限もできます
このように明示的に与えられます: -e 0、有効期限0は永久を意味します。
パージ 古い スタンプ
Status -c, -d オプションは、スタンプが有効である場合、スタンプがチェックされるたびに一緒に使用されます。
スタンプの必須の側面がすべて検証されます(衝突ビットチェック、リソース
名前チェック)次に、スタンプとその有効期限がデータベースファイルに書き込まれます。 The
有効期限が明示的に指定されていない場合のデフォルトの有効期限 -e オプションは28です
日(つまり、スタンプは4週間後に期限切れになります)。
最初にミントしてからスタンプを追加します。
「ハッシュキャッシュ-m-b 10 foo -e1m>スタンプ」
注:この例では、スタンプを確実にするために、ミンティングの有効期限を指定しました
作成時間は、スタンプが作成されないように、スタンプに十分に高い解像度で指定されます
作成時に期限切れと見なされます。 (デフォルトの解像度は日数であることに注意してください。
作成時間をXNUMX日の始まりに切り捨てて作成したスタンプは
UTCの深夜にミントしない限り、1分後に有効と見なされる可能性は低くなります。
時間。)
"hashcash -cd -e 1m -b 10 -r foo <スタンプ"
スタンプは1分で期限切れになります。 1分待ってから、期限切れを明示的にリクエストします
スタンプを削除します:
「hashcash-pnow」
次に、同じスタンプを再送信してみてください。
"hashcash -cd -e 1m -b 10 -r foo <スタンプ"
スタンプの有効期限が切れたため、スタンプはとにかく拒否されます。
このスタンプをデータベースに保持するために必要です。
デフォルトのデータベース(sdb形式)では、データベースの内容は人間が読める形式です。
そのため、ターミナルに接続することでコンテンツを表示できます。
「猫のハッシュキャッシュ.sdb」
スタンプが実際に追加されていることを確認し、その後、パージした後、
有効期限。
パージ 古い スタンプ on 需要
便利なように、を使用してスタンプをチェックすると同時にパージすることができます -p オプション
-c オプションを選択します。
"hashcash -m -b 10foo>スタンプ"
"hashcash -cd -p now -e 1 -b 10 -r foo <スタンプ"
データベース全体を削除する必要があるため、使用するたびにスタンプを削除するのは非効率的です。
期限切れのスタンプをスキャンしました。 に期間を与えることによって -p オプション、あなたは言うことができます
「ハッシュキャッシュ」は、前回のパージからその期間よりも頻繁にパージしません。
具体的な例を挙げますと、以下の通りです。
"hashcash -cd -p 1d -e 1 -b 10 -r foo <スタンプ"
「ハッシュキャッシュ」に、期限切れのスタンプをXNUMX日XNUMX回だけパージするように指示します。
"hashcash -p 1M -j foo"
「hashcash」に、リソースfooに一致する期限切れのスタンプのみを月にXNUMX回パージするように指示します。
"hashcash -p now -k"
「ハッシュキャッシュ」に、すべてのスタンプ(期限切れおよび未期限切れ)を今すぐパージするように指示します。
スタンプ 形式でアーカイブしたプロジェクトを保存します. (バージョン 1)
現在のスタンプ形式はバージョン1です。このツールはハッシュキャッシュバージョン0のスタンプを検証できます
また、バージョン0のスタンプは段階的に廃止されているため、作成されなくなりました。
より拡張可能なv1スタンプ形式。
版:ビット:date:リソースを追加する。:[EXT]:ランド:カウンタ
コラボレー
版 = 1
ビット =スタンプが持っていると主張されている部分衝突のビット数
date = YYMMDD [hhmm [ss]]
リソースを追加する。 =リソース文字列(例:IPアドレス、メールアドレス)
EXT =拡張機能-現在のバージョンでは無視されます
拡張の形式:
[name1[=val1[,val2...]];[name2[=val1[,val2...]]...]]
値には=を含めることもできることに注意してください。 拡張の例(実際のものではありません):
name1=2,3;name2;name3=var1=2,var2=3,2,val
これは拡張子name1で、値は2と3です。 拡張子name2には値がありません。
拡張機能name3には、「var3 = 1」、「var2 = 2」、「3」、「val」の2つの値があります。 ハッシュキャッシュ
拡張機能は、適切と思われる値を解釈する場合があります。たとえば、「var1 = 2」が値である可能性があります。
拡張子名のオプションの3。
ランド =アルファベットからのランダムな文字の文字列a-zA-Z0-9 + / =との衝突を避けるため
他の送信者のスタンプ
カウンタ =必要な数の衝突ビットを持つスタンプを見つけるには、多くのことを試す必要があります
このカウンターは、試行ごとにインクリメントされるさまざまな文字列です。 カウンターも構成されています
アルファベットa-zA-Z0-9 + / =の文字。 (実装は必要ないことに注意してください
順番に数えます)。
onworks.netサービスを使用してオンラインでハッシュキャッシュを使用する