hashcash - ออนไลน์ในคลาวด์

นี่คือคำสั่ง hashcash ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


hashcash - hashcash ต่อต้านสแปม / ปฏิเสธเครื่องมือตอบโต้บริการ

เรื่องย่อ


ทำเหรียญ (สร้าง) แสตมป์:

แฮชcash -m [[ ตัวเลือก ] [ ทรัพยากร -

ตรวจสอบ แสตมป์:

แฮชcash -c [[ ตัวเลือก ] -r ทรัพยากร - ประทับ -

ความเร็ว ประมาณการ:

แฮชcash -s [ ตัวเลือก ] [ -b บิต ]

ล้าง ฐานข้อมูล:

แฮชcash -p ตอนนี้ [ -j ทรัพยากร ] [ -k ] [ -t เวลา ] [ -u ]

นับ การปะทะกัน บิต:

แฮชcash -w [ ตัวเลือก ] [ ประทับ -

รับ ทรัพยากร ชื่อ:

แฮชcash -n [ ตัวเลือก ] [ ประทับ -

รับ เวลา ที่เหลืออยู่ จนกระทั่ง หมดอายุ

แฮชcash -l [ ตัวเลือก ] -e ระยะเวลา [ ประทับ -

DESCRIPTION


Hashcash เป็นเครื่องมือวัดเคาน์เตอร์ปฏิเสธการให้บริการ การใช้งานหลักในปัจจุบันคือการช่วย
ผู้ใช้ hashcash หลีกเลี่ยงการสูญเสียอีเมลเนื่องจากการต่อต้านสแปมตามเนื้อหาและบัญชีดำ
ระบบ

เครื่องมือแฮชแคชช่วยให้คุณสร้างแสตมป์แฮชแคชเพื่อแนบไปกับอีเมลที่คุณส่งและ
เพื่อตรวจสอบประทับตรา hashcash ที่แนบมากับอีเมลที่คุณได้รับ ผู้ส่งอีเมลแนบ hashcash
ประทับตราด้วย X-Hashcash: ส่วนหัว ขอแนะนำให้ผู้ขายและผู้เขียนเครื่องมือป้องกันสแปม
เพื่อยกเว้นเมลที่ส่งด้วย hashcash จากบัญชีดำและกฎการกรองตามเนื้อหา

การประทับตรา hashcash ถือเป็นการพิสูจน์การทำงานซึ่งใช้ปริมาณงานที่สามารถกำหนดพารามิเตอร์ได้
เพื่อคำนวณสำหรับผู้ส่ง ผู้รับสามารถตรวจสอบตราประทับที่ได้รับได้อย่างมีประสิทธิภาพ

ฟังก์ชันพิสูจน์การทำงานของแฮชแคชคือการคำนวณการชนกันของแฮชบางส่วน (แฮช SHA1
ใช้ฟังก์ชัน) โดยเลือกจำนวนบิตของการชนกัน งานที่ต้องทำ
การคำนวณการชนกันสามารถทำได้โดยพลการแพง -- จากเศษส่วนของวินาทีถึง
นาทีหรือชั่วโมง การตรวจสอบมีประสิทธิภาพซึ่งต้องใช้ต้นทุนเพียงเล็กน้อยเท่ากันทุกประการ
ขนาดการชนกัน

สำหรับการอภิปรายโดยละเอียดเพิ่มเติมเกี่ยวกับการใช้แฮชแคชของแอปพลิเคชันอื่นสำหรับดู
http://www.hashcash.org/

การใช้ หมายเหตุ


ในหน้านี้ชื่อทรัพยากรคือชื่อของบริการหรือที่อยู่ที่ตราประทับคือ
สร้างขึ้นเพื่อ ในกรณีของอีเมล ชื่อทรัพยากรคือที่อยู่อีเมลของผู้รับใน
แบบฟอร์ม user@domain.com.

การทำเหรียญ แสตมป์

พื้นที่ -m ต้องมอบธงเพื่อทำตราประทับ

ชื่อทรัพยากร (ที่อยู่อีเมลของผู้รับ) ที่จะใช้ประทับตราสามารถส่งเป็น
อาร์กิวเมนต์หรือถ้าละเว้นจะถูกอ่านจาก stdin หาก stdin เป็น tty ผู้ใช้จะได้รับแจ้ง if
stdin เป็นไพพ์ที่ชื่อทรัพยากรถูกอ่านอย่างเงียบ ๆ ขนาดการชนที่ต้องการสามารถ
ระบุด้วยตัวเลือก -b หากไม่มีการระบุขนาดการชน ค่าดีฟอลต์คือ 20
บิต ดูเพิ่มเติมที่ -b ผิดนัด ตัวเลือก

การตรวจสอบ แสตมป์

พื้นที่ -c ต้องให้ธงเพื่อตรวจสอบการหมดอายุของแสตมป์ ตราประทับที่จะตรวจสอบสามารถกำหนดให้เป็น
อาร์กิวเมนต์ "hashcash" หากไม่ได้รับตราประทับ ตราประทับจะถูกอ่านจาก stdin ถ้า stdin เป็น a
tty ผู้ใช้จะได้รับแจ้ง ถ้า stdin เป็นไพพ์ ตราประทับจะถูกอ่านอย่างเงียบๆ NS
ชื่อทรัพยากร (ที่อยู่อีเมลของผู้รับ) สามารถระบุได้ด้วย -r ตัวเลือก. ถ้า
ชื่อทรัพยากรถูกกำหนดชื่อทรัพยากรจะถูกเปรียบเทียบกับชื่อทรัพยากรในตราประทับ if
ไม่ตรงกัน แสตมป์ถูกปฏิเสธ

หมายเหตุ: หากไม่มีการระบุชื่อทรัพยากร ตราประทับจะถูกตรวจสอบเพื่อดูว่าเป็นอย่างอื่นหรือไม่
ถูกต้อง แต่สามารถสร้างเป็นทรัพยากรอื่นได้ ซึ่งจะทำให้แสตมป์เป็น
ใช้ซ้ำในทรัพยากรต่างๆ ดังนั้น hashcash จะส่งคืนรหัสทางออกที่ไม่ได้ตรวจสอบเมื่อออก

โดยค่าเริ่มต้น แสตมป์จะถือว่ามีอายุ 28 วัน ระยะเวลาที่ใช้ได้สามารถเป็น
เปลี่ยนโดยใช้ -e ธง.

หากตราประทับหมดอายุหรือมีวันที่ในอนาคตแสตมป์จะถูกปฏิเสธและโปรแกรม
ออกไปทันที

หากกำหนดขนาดการชนกันที่กำหนดด้วย -b ธง คำนวณค่าแสตมป์และ
เปรียบเทียบถ้าตราประทับมีค่าไม่เพียงพอจะถูกปฏิเสธและโปรแกรมออก
โดยทันที. ถ้า -b ไม่ได้ให้ธง ให้ประทับตราตรวจสอบเพื่อดูว่าเป็นอย่างอื่นหรือไม่
ถูกต้อง แต่ hashcash จะส่งคืนรหัสทางออกที่ไม่ได้ตรวจสอบเมื่อออก

หากตราประทับเป็นสองเท่า ตราประทับจะถูกปฏิเสธ คุ้มครองการใช้จ่ายสองเท่าคือ
กล่าวถึงรายละเอียดเพิ่มเติมด้านล่างใน "การคุ้มครองการใช้จ่ายซ้ำซ้อน" หากใช้จ่ายซ้ำซ้อน
ไม่ได้เปิดใช้งานการป้องกัน แสตมป์สามารถใช้ซ้ำได้ ดังนั้น hashcash จะกลับมา
รหัสทางออกที่ไม่ได้ตรวจสอบ (รหัสทางออก 2) เมื่อออก

พื้นที่ -w ธงสามารถใช้เพื่อขอให้นับจำนวนบิตของการชนกัน
และแสดง NS -n ธงสามารถใช้เพื่อขอชื่อทรัพยากรในตราประทับเป็น
แยกวิเคราะห์และแสดง NS -l ธงสามารถใช้ขอจำนวนวินาทีจนถึง
การหมดอายุของตราประทับจะถูกส่งออก

โปรแกรมจะส่งคืนรหัสทางออกที่ถูกต้องหรือไม่ถูกต้องหาก -c ใช้แฟล็ก the -b
ใช้ธง -d, -r ทรัพยากร ถูกนำมาใช้ นี่เป็นชุดตัวเลือกขั้นต่ำที่จำเป็นในการ
ตรวจสอบความถูกต้องของแสตมป์ให้ครบถ้วน หากไม่ตรงตามเกณฑ์เหล่านี้ โปรแกรมจะ
ส่งคืนรหัสทางออกที่ไม่ได้เลือก (รหัสทางออก 2) เมื่อออก (ดูเพิ่มเติมที่ -y ธง.)

สอง การใช้จ่าย การป้องกัน

ถ้า -d แฟล็กถูกใช้ในการตรวจสอบแสตมป์ ฐานข้อมูลของแสตมป์ที่ใช้แล้วจะถูกเก็บไว้

โดยค่าเริ่มต้น ตราประทับจะหมดอายุหลังจาก 28 วัน โดยไม่มีการหมดอายุ ฐานข้อมูลจะเพิ่มขึ้น
อย่างไม่มีกำหนด คุณสามารถระบุช่วงเวลาหมดอายุอื่นด้วยปุ่ม -e ธง. NS
ระยะเวลาหมดอายุที่แนะนำ (และค่าเริ่มต้น) สำหรับอีเมลคือ 28 วัน หลังหมดเวลา
ระยะเวลา ตราประทับใด ๆ ถือว่าหมดอายุและอาจถูกลบออกจากฐานข้อมูล
เพื่อประหยัดพื้นที่ (ดู "การล้างเป็นระยะเทียบกับการเข้าถึงครั้งต่อไป" สำหรับวิธีการล้างแสตมป์)

ด้วยเหตุผลด้านประสิทธิภาพ ตราประทับจะถูกตรวจสอบก่อนที่จะตรวจสอบในฐานข้อมูล ถ้ามันเป็น
มิฉะนั้นจะไม่มีกิจกรรมฐานข้อมูลเกิดขึ้น

หมายเหตุ: การพิจารณาระยะเวลาที่ตราประทับควรจะถือว่าถูกต้องนั้นขึ้นอยู่กับ
ผู้ตรวจสอบ ถ้ามันสั้นเกินไปก็เป็นไปได้สำหรับบางแอพพลิเคชั่นที่ตราประทับจะ
หมดอายุก่อนถึงผู้รับ (เช่น อีเมล) ค่าแนะนำ 28 วัน
ควรจะปลอดภัยสำหรับความล่าช้าในการส่งอีเมลตามปกติ ทางเลือกคือการแลกเปลี่ยนระหว่าง
ขนาดฐานข้อมูลและความเสี่ยงของการหมดอายุก่อนเดินทางมาถึงและขึ้นอยู่กับแอปพลิเคชัน

หมายเหตุ: ตราประทับที่แตกต่างกันในฐานข้อมูลเดียวกันสามารถมีช่วงเวลาที่ใช้ได้ต่างกัน ดังนั้นสำหรับ
ตัวอย่างตราประทับสำหรับทรัพยากรต่าง ๆ ที่มีช่วงเวลาที่มีผลบังคับใช้ต่างกันสามารถเก็บไว้ใน
ฐานข้อมูลเดิมหรือผู้รับอาจเปลี่ยนระยะเวลาการประทับตราในอนาคต
โดยไม่กระทบต่อความถูกต้องของแสตมป์เก่า

การกวาดล้าง เป็นระยะ vs on ถัดไป ทางเข้า

หากต้องการล้างแสตมป์เก่าเป็นระยะขณะตรวจสอบตราประทับ ให้ใช้ -p ระยะเวลา ตัวเลือกในการล้าง
ไม่ช้ากว่าระยะเวลาที่กำหนดตั้งแต่การล้างครั้งสุดท้าย การล้างสามารถใช้กับ
-k ตัวเลือกในการล้างแสตมป์ที่ยังไม่หมดอายุและด้วย -j ทรัพยากร ธงเพื่อล้างเท่านั้น
แสตมป์สำหรับทรัพยากรที่กำหนด

มีสถานการณ์ที่อาจไม่สะดวกที่จะล้างแสตมป์ในการเข้าถึงครั้งต่อไป
เช่น หากมีฐานข้อมูล Double-Expender ขนาดใหญ่ซึ่งใช้เวลาในการล้างข้อมูล และ
เวลาตอบสนองของตัวตรวจสอบแฮชแคชมีความสำคัญ เพื่อหลีกเลี่ยงปัญหานี้ ให้ล้าง
แยกกันได้โดยใช้ปุ่ม -p ตอนนี้ ตัวเลือกเพื่อขอเพียงการดำเนินการล้าง
บนยูนิกซ์คุณสามารถเรียก "hashcash -p ตอนนี้" ในงาน cron วันละครั้งหรือ
ความต้องการเมื่อดิสก์เหลือน้อย

ความเร็ว ประมาณการ

พื้นที่ -s แฟล็กร้องขอการวัดจำนวนการชนที่สามารถทดสอบได้ต่อวินาที เลขที่
แสตมป์ถูกสร้างขึ้นหรือตรวจสอบแล้ว

ถ้า -b ใช้แฟล็กกับตัวเลือกนี้ แทนที่จะใช้ค่าประมาณว่าจะใช้เวลากี่วินาที
นำไปคำนวณแสตมป์ขนาดที่กำหนดเป็นบิต เพื่อจะได้รู้ว่ามันนานแค่ไหน
จะใช้เวลาในการสร้างตราประทับขนาดเริ่มต้นที่ใช้ -s -b ผิดนัด.

หมายเหตุ / รายละเอียดเพิ่มเติม

ข้อมูลที่ส่งออกทั้งหมดจะพิมพ์บน stderr แสตมป์มิ้นต์ และผลงานแสตมป์
การตรวจสอบและกำหนดเวลาจะพิมพ์บน stdout ธงที่เงียบสงบ -q ระงับทั้งหมด
เอาท์พุทข้อมูล NS -v แฟล็กขอเอาต์พุตข้อมูลเพิ่มเติม ที่ร้องขอ
output ซึ่งเป็นข้อมูลเดียวที่ส่งออกในโหมดเงียบ (เมื่อ -q ระบุไว้)
ถูกพิมพ์บนเอาต์พุตมาตรฐาน หาก stdout เป็นไพพ์ หรือเมื่อโหมดเงียบมีผล
เอาต์พุตถูกพิมพ์โดยไม่มีคำอธิบาย (เช่น แค่บิต แค่ไม่กี่วินาที แค่ทรัพยากร)

OPTIONS


-c ตรวจสอบข้อมูลการหมดอายุของแสตมป์ที่ให้ไว้เป็นอาร์กิวเมนต์หรือใน stdin (ใช้กับ
-b, -d และ -r ทรัพยากร เพื่อตรวจสอบตราประทับให้ครบถ้วน)

-m แสตมป์มิ้นต์ด้วยทรัพยากรที่กำหนดเป็นอาร์กิวเมนต์หรือบน stdin

-b บิต
เมื่อสร้างตราประทับ ให้สร้างการชนกันอย่างน้อยหลายบิตนี้ เมื่อตรวจสอบ a
แสตมป์ต้องการให้มีการชนกันอย่างน้อยที่สุดหลายบิต มิฉะนั้น ปฏิเสธ
มัน. หากละเว้นจะใช้ค่าเริ่มต้น

เมื่อตรวจสอบตราประทับ กำหนดให้ตราประทับมีหลายบิต

สามารถระบุจำนวนบิตเริ่มต้นได้ด้วย -b ผิดนัด. บิตสัมพันธ์กับ
ค่าเริ่มต้นยังสามารถระบุด้วย -b +n สำหรับ n บิตมากกว่าค่าเริ่มต้นและ -b -n
สำหรับ n บิตที่น้อยกว่าค่าดีฟอลต์

-b ผิดนัด, -b +0 และ -b -0 มีค่าเท่ากันทั้งหมด

เมื่อทำการทดสอบความเร็ว -s, สามารถวัดความเร็วของโทเค็นเริ่มต้นด้วย -s -b
ผิดนัด.

-r ทรัพยากร
เมื่อสร้างตราประทับ ชื่อทรัพยากร (ที่อยู่อีเมลของผู้รับ) เพื่อสร้างตราประทับ
ต่อต้าน สามารถให้ได้ทั้งกับ -r ทรัพยากร หรือเป็นอาร์กิวเมนต์ของ "hashcash"

เมื่อตรวจสอบตราประทับ ชื่อทรัพยากร (ที่อยู่อีเมลของคุณเอง) จะได้รับพร้อมกับ -r
ตัวเลือก. หากระบุชื่อทรัพยากร ระบบจะตรวจสอบกับชื่อทรัพยากรใน
ตราประทับและหากไม่ตรงกับตราประทับจะถูกปฏิเสธ สังเกตว่าชื่อทรัพยากรคือ
ไม่ได้รับแสตมป์สำหรับทรัพยากรอื่น ๆ จะได้รับการยอมรับและดังนั้น hashcash
ส่งคืนรหัสทางออกที่ไม่ได้ตรวจสอบ (รหัสทางออก 2) เมื่อออก

-o เมื่อตรวจสอบแสตมป์สามารถให้ทรัพยากรได้หลายอย่าง โดยค่าเริ่มต้น ทรัพยากรคือ
เพิ่งตรวจสอบทีละรายการจนกว่าจะพบทรัพยากรที่ถูกต้องตรงกัน อย่างไรก็ตาม เมื่อคุณ
ใช้สัญลักษณ์แทนหรือนิพจน์ทั่วไป (ดู -E) เป็นประโยชน์ที่จะระบุได้ว่า
ทรัพยากรหนึ่งแทนที่อีกทรัพยากรหนึ่ง ตัวอย่างเช่น: -b15 -r adam@dev.null -o -b10
*@dev.null ระบุว่าส่งไปยังที่อยู่ adam@dev.null ต้องการ 15 บิต แต่ส่งไปที่
*@dev.null ต้องการเพียง 10 บิต ถ้าเราละเว้น -o แทนที่ความสัมพันธ์ระหว่าง
ทั้งสองทรัพยากร แสตมป์ 10 บิตจะได้รับการยอมรับสำหรับที่อยู่ adam@dev.null
เพราะในขณะที่มันจะถูกปฏิเสธเนื่องจากมีบิตไม่เพียงพอภายใต้กฎข้อแรก
จะได้รับการยอมรับภายใต้กฎข้อที่ 2 NS -o ตัวเลือกช่วยให้คุณหลีกเลี่ยงปัญหานี้ได้

-e เวลา
ระยะเวลาหมดอายุของแสตมป์ที่ใช้แล้ว ขณะตรวจตราประทับ (โดยใช้เครื่องหมาย -c ธง) ถ้า
ตราประทับสร้างเสร็จเกินระยะเวลาที่กำหนด ถือว่าหมดอายุแล้ว
หากไม่ได้ใช้ตัวเลือกนี้ ตราประทับเริ่มต้นจะหมดอายุหลังจาก 28 วัน ระยะเวลาหมดอายุ
กำหนดเป็นวินาทีโดยค่าเริ่มต้น (อาร์กิวเมนต์ 0 หมายถึงตลอดไป) ตัวอักษรตัวเดียว
คำต่อท้ายสามารถใช้เพื่อระบุหน่วยสำรอง (m = นาที, h = ชั่วโมง, d = วัน, M =
เดือน y = Y = ปี และ s = วินาที)

ถ้าใช้กับ -d ตัวเลือก แสตมป์ที่ใช้แล้วและระยะเวลาหมดอายุจะถูกบันทึกไว้ใน
ฐานข้อมูล ดู -p ตัวเลือกสำหรับคำอธิบายวิธีการล้างแสตมป์ออกจากฐานข้อมูล

ในขณะที่ทำแสตมป์ the -e ธงสามารถมีผลต่อความละเอียดของเวลาที่สร้างขึ้น
ในแสตมป์ ปราศจาก -e ตัวเลือก ความละเอียดเริ่มต้นคือวัน (รูปแบบเวลา:
ปปปป) รูปแบบอื่นตามช่วงระยะเวลาหมดอายุมีดังนี้:

ในขณะที่ทำเหรียญกษาปณ์ คุณสามารถกำหนดความกว้างของเวลาที่ชัดเจนด้วย -z ตัวเลือกแทน
(-z แทนที่ -e ถ้าให้ทั้งสองอย่าง หากไม่มีการกำหนดค่าเริ่มต้นคือ 6 ตัวอักษร (time
รูปแบบ: 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
ตัวอักษรที่สอดคล้องกับ: YYMMDD, YYMMDDhhmm และ YYMMDDhhmmss ปัดเศษลง
เป็นวันที่ใกล้ที่สุดหรือนาทีตามลำดับ

โปรดทราบว่าการปัดเศษตามเวลา UTC ไม่ใช่เวลาท้องถิ่น นี้สามารถนำไปสู่
ผลลัพธ์ที่น่าประหลาดใจในตอนแรกเมื่อปัดเศษลงเช่นวันในเขตเวลาอื่นที่ไม่ใช่ GMT
(UTC = GMT) อาจเข้าใจได้ชัดเจนขึ้นหากคุณใช้ -u ตัวเลือก

-g ระยะเวลา
พื้นที่ -g ตัวเลือกใช้สำหรับตรวจสอบแสตมป์ hashcash ด้วย -c ตัวเลือกและ
ระบุระยะเวลาผ่อนผันสำหรับนาฬิกาเอียง กล่าวคือ ถ้าตราประทับ hashcash มาถึงพร้อมวันที่ใน
ในอนาคตหรือในอดีตจะไม่ถูกปฏิเสธว่าเป็นวันแห่งอนาคต (หรือเป็น
หมดอายุ) เว้นแต่จะล้ำยุคกว่า (หรือหมดอายุไปนานแล้ว) กว่านี้
ระยะเวลา. ค่าเริ่มต้นคือ 2 วัน ซึ่งหมายความว่าตราบใดที่นาฬิกาของระบบส่งเป็น
ไม่เกิน 2 วันข้างหน้า (หรือ 2 วันหลัง) ของนาฬิการะบบรับ
ยังคงยอมรับการประทับตรา hashcash

หน่วยเริ่มต้นสำหรับระยะเวลาผ่อนผันคือวินาที สามารถใช้คำต่อท้ายอักขระเดียวได้
เพื่อระบุหน่วยสำรอง (m = นาที, h = ชั่วโมง, d = วัน, M = เดือน, y = Y =
ปี และ s = วินาที)

-d จัดเก็บแสตมป์ในฐานข้อมูลการใช้จ่ายซ้ำซ้อน ถ้าเคยเห็นแสตมป์มาก่อนก็จะเป็น
ถูกปฏิเสธแม้ว่าจะเป็นอย่างอื่นที่ถูกต้อง ไฟล์ฐานข้อมูลเริ่มต้นคือ ฐานข้อมูล.sdb in
ไดเร็กทอรีปัจจุบัน เฉพาะตราประทับที่ถูกต้องเท่านั้นที่จะเก็บไว้ในฐานข้อมูล
เฉพาะตราประทับที่ตรวจสอบแล้วเท่านั้นที่จะเก็บไว้ในฐานข้อมูล เว้นแต่ -y ตัวเลือกที่
ให้

-f ชื่อฐานข้อมูล
ใช้ ชื่อฐานข้อมูล แทนชื่อไฟล์เริ่มต้นสำหรับฐานข้อมูลคู่ใช้

-p ระยะเวลา
ล้างฐานข้อมูลของตราประทับที่หมดอายุ หากพ้นระยะเวลาที่กำหนดตั้งแต่
ครั้งล่าสุดมันถูกล้าง เพื่อความสะดวก -p ตอนนี้ เทียบเท่ากับ -p 0 ทั้งสองอย่าง
หมายถึงการล้างตอนนี้ ไม่ว่าฐานข้อมูลจะถูกล้างครั้งสุดท้ายเมื่อใด

หากใช้ร่วมกับ -j ทรัพยากร เฉพาะแสตมป์ที่ทำขึ้นสำหรับทรัพยากรที่กำหนด
ถูกล้าง

หากใช้ร่วมกับ -k แสตมป์ทั้งหมดแม้กระทั่งแสตมป์ที่ยังไม่หมดอายุจะถูกลบออก เป็นไปได้
ใช้ร่วมกับ -t เวลา ให้หมดอายุราวกับว่าเวลาปัจจุบันเป็นเวลาที่กำหนด

-k ใช้กับ option -p เพื่อขอให้ลบแสตมป์ทั้งหมดมากกว่าที่จะหมดอายุ

-j ทรัพยากร
ใช้กับ option -p เพื่อขอเพียงตราประทับที่ตรงกับชื่อทรัพยากรที่กำหนดคือto
ถูกล้าง แทนที่จะเป็นค่าเริ่มต้นที่จะล้างแสตมป์ที่หมดอายุทั้งหมด ถ้า
ชื่อทรัพยากรเป็นสตริงว่าง ตราประทับทั้งหมดตรงกัน (ซึ่งเทียบเท่ากับ
ละเว้น -j ตัวเลือก)

หมายเหตุ -E, -M และ -S ประเภทของแฟล็กการแข่งขันยังใช้กับทรัพยากรที่มอบให้กับ -j
ทรัพยากร ธง.

-s พิมพ์ข้อมูลเวลาเท่านั้น และอย่าดำเนินการสร้างตราประทับ ถ้ารวมกับ
-b บิต ค่าประมาณการพิมพ์ธงว่าขนาดการชนกันที่ร้องขอจะใช้เวลานานแค่ไหน
คำนวณ if -s โดยตัวมันเองเพียงพิมพ์ความเร็วของตัวค้นหาการชนกัน ปริ้น
ค่าประมาณระยะเวลาเริ่มต้นของจำนวนบิตที่จะใช้ -b ผิดนัด.

-h พิมพ์ข้อมูลการใช้งานแบบสั้น

-v พิมพ์ข้อมูลที่ละเอียดมากขึ้นเกี่ยวกับการทำตราประทับหรือการตรวจสอบ (ถ้า
-v เป็นอาร์กิวเมนต์เดียว พิมพ์หมายเลขเวอร์ชันเครื่องมือ)

-V พิมพ์หมายเลขรุ่นเครื่องมือ

-q โหมดแบทช์ ไม่พิมพ์ข้อมูลอื่นใดนอกจากเอาต์พุต ตัวเลือกนี้จะแทนที่ -v
ตัวเลือก

-X เมื่อสร้างเหรียญ พิมพ์อีเมลแฮชแคช X-header 'X-Hashcash: ' ก่อนประทับตรา
หากไม่มีตัวเลือกนี้ จะมีการพิมพ์ตราประทับเปล่าเท่านั้น

เมื่อตรวจสอบ หลังจากสแกนแสตมป์ที่กำหนดเป็นอาร์กิวเมนต์แล้ว ให้สแกน stdin เพื่อหาบรรทัด
เริ่มต้นด้วยสตริง 'X-Hashcash:' และใช้ส่วนที่เหลือของบรรทัดที่ตรงกันเป็น
ประทับ. สแกนเฉพาะบรรทัดที่ขึ้นและลงที่บรรทัดแรกว่างเท่านั้น (ดูเพิ่มเติม
-i ธงซึ่งสามารถใช้เพื่อแทนที่สิ่งนี้) บรรทัดว่างเป็นตัวคั่นที่ใช้เพื่อ
แยกส่วนหัวออกจากเนื้อหาของข้อความเมลหรือบทความ USENET นี้มันมีความหมาย
เพื่อให้สะดวกต่อการไพพ์ข้อความเมลหรือบทความ USENET ไปยัง hashcash บน stdin

-x นามสกุล
สตริงส่วนขยายที่ประกอบด้วยชุดค่าชื่อ มีการอธิบายรูปแบบส่วนขยายไว้
ด้านล่างในส่วนรูปแบบแสตมป์แฮชแคช ซึ่งช่วยให้ผู้ใช้สามารถกำหนด
ของตัวเองที่มีนามสกุลซึ่งถูกแฮชเข้าไปในตราประทับ, ตรวจสอบโดยผู้รับว่า
สนับสนุนพวกเขาและละเลยโดยผู้รับที่ไม่สนับสนุนพวกเขา สังเกตนามสกุล
กลไกเบ็ดยังไม่ได้ดำเนินการ ซึ่งจะมาในรุ่นต่อๆ ไป

-i เมื่อตรวจสอบและใช้งาน -X ธง ละเว้นขอบเขตบรรทัดว่างระหว่างส่วนหัว
และเนื้อความของข้อความ และตรวจสอบการชนกันในร่างกายด้วยหากไม่พบตัวใดตัวหนึ่ง
ในส่วนหัว

-t เวลา
แสร้งทำเป็นว่าเวลาปัจจุบันเป็นเวลาที่กำหนดเพื่อจุดประสงค์ในการทำแสตมป์ การตรวจสอบ
แสตมป์และการลบแสตมป์เก่าออกจากฐานข้อมูล เวลาจะได้รับในรูปแบบตาม
รูปแบบ UTCTIME YYMMDD[hhmm[ss]]

เวลาจะแสดงเป็นเวลาท้องถิ่นโดยค่าเริ่มต้น ใช้กับ -u ธงเพื่อให้เวลาในUTC
(GMT).

คุณยังสามารถให้เวลาที่สัมพันธ์กับเวลาปัจจุบันโดยนำหน้าอาร์กิวเมนต์ด้วย +
หรือ -. หน่วยเริ่มต้นสำหรับเวลาสัมพัทธ์คือวินาที คำต่อท้ายอักขระตัวเดียวสามารถ
ใช้เพื่อระบุหน่วยสำรอง (m = นาที, h = ชั่วโมง, d = วัน, M = เดือน, y =
Y = ปี และ s = วินาที)

หมายเหตุ: เมื่อเวลาแสดงเป็นเวลาท้องถิ่น หากมีการปรับเวลาตามฤดูกาลใน . ของคุณ
เขตเวลา มีหนึ่งหรือสองชั่วโมงที่คลุมเครือต่อปีในขณะที่เปลี่ยนจาก
เวลาออมแสงเป็นเวลาปกติ

-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
สไตล์: ไม่จำเป็นต้องใส่เครื่องหมายพิเศษเพื่อให้มีความหมายพิเศษ แต่
จะต้องอ้างอิงด้วย \ กับอักขระนั้นในสตริงที่ค้นหา NS
นิพจน์ทั่วไปได้เพิ่ม ^ โดยอัตโนมัติที่จุดเริ่มต้นและ $ เพิ่มในตอนท้าย
หากไม่ได้ระบุไว้ อักขระพิเศษ ^ ตรงกับจุดเริ่มต้นของ
resouce และ $ ตรงกับจุดสิ้นสุดของทรัพยากร

(หมายเหตุ แม้ว่าจะคอมไพล์ด้วยนิพจน์ทั่วไป BSD ไวยากรณ์รูปแบบ POSIX ก็ถูกใช้เช่นกัน
โปรดทราบว่านิพจน์ทั่วไป BSD ไม่รองรับช่วง {}.)

-C ตามค่าเริ่มต้น ทรัพยากรจะถูกกำหนดเป็นอักษรตัวพิมพ์เล็กในการขุดและการตรวจสอบ NS
-C แฟล็กแทนที่สิ่งนี้เพื่อให้ทรัพยากรได้รับการปฏิบัติเหมือนตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในการตรวจสอบ
และไม่ถูกบัญญัติขึ้นในโรงกษาปณ์

-P พิมพ์ข้อมูลความคืบหน้า (จำนวนการทำซ้ำ, การทำซ้ำที่คาดไว้, เปอร์เซ็นต์ที่เสร็จสิ้น, ดีที่สุด
ขนาดแสตมป์ที่พบจนถึงปัจจุบัน)

-O แกน
เลือก hashcash core ด้วยหมายเลขนั้น ปัจจุบัน 0-9 เป็นคอร์ที่ถูกต้อง ไม่ใช่คอร์ทั้งหมด
ทำงานบนสถาปัตยกรรมทั้งหมด เช่นบางตัวเป็นแอสเซมเบลอร์เฉพาะ x86 อื่น ๆ เฉพาะ PPC
ผู้ประกอบ. หากคอร์ไม่ถูกต้อง hashcash จะส่งคืนความล้มเหลวและอธิบายอะไร
ที่เกิดขึ้น

-Z n
บีบอัดตราประทับ นี่คือการแลกเปลี่ยนระหว่างเวลากับอวกาศ แสตมป์ที่ใหญ่กว่านั้นเร็วกว่า แต่
เนื้อหาน่าเกลียดเล็กน้อย สำหรับแสตมป์ที่เร็วที่สุด (ค่าเริ่มต้น) ให้ใช้ -Z 0; ส่วนหนึ่ง
แสตมป์บีบอัดใช้ -Z 1; สำหรับแสตมป์ที่บีบอัดมาก แต่ค่อนข้างช้าให้ใช้ -Z 2
(หมายเหตุ: เนื่องจากข้อบกพร่องที่ค้นพบในช่วงหลัง ทำให้ -Z2 เหมือนกับ -Z1 จนถึงตอนนี้ จนกว่าฉันจะแก้ไขได้
นั่น.)

ตัวอย่าง


การสร้าง แสตมป์

"แฮชแคช -s"
พิมพ์ข้อมูลเวลาเกี่ยวกับจำนวนการชนที่เครื่องสามารถลองได้ต่อวินาที

"แฮชแคช -sv"
การเปรียบเทียบที่แม่นยำขึ้นแต่ค่อนข้างช้าของการทำมิ้นต์เฉพาะตัวประมวลผลที่แตกต่างกัน
แกน

"hashcash -s -b ค่าเริ่มต้น"
พิมพ์ระยะเวลาที่เครื่องใช้ในการคำนวณการชนกันของขนาดเริ่มต้น (แต่
ไม่ได้คำนวณการชนกันจริง ๆ )

"แฮชแคช -s -b 32"
พิมพ์ระยะเวลาที่เครื่องจะใช้ในการคำนวณการชนกันแบบ 32 บิต (แต่อย่า
จริง ๆ แล้วคำนวณการชนกัน)

"แฮชแคช -m"
มิ้นท์แสตมป์ จะถามชื่อทรัพยากรและมิ้นต์ด้วยค่าเริ่มต้น (จำนวน
บิตการชนกัน)

"แฮชแคช -m foo"
คำนวณการชนกันของทรัพยากร foo จะสะระแหน่ด้วยค่าเริ่มต้น (จำนวนการชนกัน
บิต)

"แฮชแคช -m foo -b 10"
คำนวณการชนกัน 10 บิตบนทรัพยากร foo

"แฮชแคช -a -3d"
ลบเวลาสุ่มระหว่าง 0 วันถึง 3 วันจากเวลาที่สร้างแสตมป์
นี่เป็นปัจจัยเดียวกับที่ mixmaster ใช้เพื่อลดความเสี่ยงของความสัมพันธ์ระหว่างเวลา

การตรวจสอบ แสตมป์

"hashcash -w 1:24:040806:foo::511801694b4cd6b0:1e7297a"
รายงานมูลค่าของตราประทับ (จำนวนการชนกัน) ที่มีอยู่ ตัวอย่างคือ
การชนกันแบบ 24 บิต ซึ่งใช้เวลาเฉลี่ย 25 ​​วินาทีในการสร้างบน 3Ghz P4

"hashcash -mq -b 10 foo ⎪ hashcash -w"
สร้างตราประทับในโหมดแบทช์ ส่งผ่านไปยัง hashcash บน stdin เพื่อตรวจสอบ ให้พิมพ์อย่างไร
มีหลายบิต

"hashcash -n 1:24:040806:foo::511801694b4cd6b0:1e7297a"
รายงานชื่อทรัพยากรจากตราประทับ ชื่อทรัพยากรในตัวอย่างคือ foo

"hashcash -l -e 30y 1:24:040806:foo::511801694b4cd6b0:1e7297a"
แจ้งระยะเวลาที่ตราประทับจะหมดอายุหากหมดอายุใน 30 ปีนับจากการสร้าง
วันที่. (หมายเหตุวันที่ไกลเกินไปในอนาคตจะสิ้นสุดในยุค 2038 ซึ่งก็คือ
แอนะล็อกเวลา unix ของบั๊ก y2k)

การตรวจสอบ แสตมป์

"hashcash -c 1:24:040806:foo::511801694b4cd6b0:1e7297a"
ตรวจสอบว่าแสตมป์ถูกต้องหรือไม่ หมายเหตุ เนื่องจากเราไม่ได้ตรวจสอบตราประทับในการใช้จ่ายซ้ำซ้อน
ฐานข้อมูลและไม่ได้ระบุชื่อทรัพยากรหรือจำนวนบิตของการชนกันที่ต้องการ
และ hashcash จะถือว่าตราประทับที่ไม่ได้รับการตรวจสอบอย่างสมบูรณ์และจะรายงานว่าถูกต้อง
แต่ยังไม่ได้ตรวจสอบทั้งหมด หรือไม่ถูกต้องหากมีปัญหากับตราประทับ

"hashcash -c -b24 1:24:040806:foo::511801694b4cd6b0:1e7297a"
ตรวจสอบว่าค่าของตราประทับมากกว่าหรือเท่ากับ 24 บิต ตัวอย่างนี้มี24
ค่าบิต หากคุณเพิ่มจำนวนบิตที่ร้องขอหรือแทนที่ตราประทับด้วยหนึ่ง
ด้วยการชนกันน้อยกว่า 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"
ตรวจสอบตราประทับและเพิ่มลงในฐานข้อมูลที่ใช้ซ้ำสองครั้งหากถูกต้อง (มีทรัพยากรที่ถูกต้อง
ชื่อและค่าที่เพียงพอ)

"hashcash -cd -b 10 -r foo 1:24:040806:foo::511801694b4cd6b0:1e7297a"
พยายามใช้แสตมป์เป็นสองเท่า จะถูกปฏิเสธเป็นการใช้จ่ายซ้ำซ้อน

แสตมป์ หมดอายุ

เพื่อป้องกันไม่ให้ฐานข้อมูลทวีคูณเพิ่มขึ้นอย่างไม่มีกำหนด ผู้รับสามารถร้องขอได้
แสตมป์มีอายุไม่เกินระยะเวลาที่กำหนด หลังจากหมดอายุแสตมป์เก่าสามารถดรอปจาก
ฐานข้อมูลการใช้จ่ายสองเท่าเนื่องจากไม่จำเป็นต้องใช้อีกต่อไป - แสตมป์ที่หมดอายุสามารถปฏิเสธได้
โดยอาศัยอายุของพวกมันล้วนๆ ดังนั้นช่องว่างที่ตราประทับที่หมดอายุใช้ไปเป็นสองเท่า
สามารถบันทึกฐานข้อมูลได้โดยไม่มีความเสี่ยงในการยอมรับการประทับตราที่หมดอายุ

ช่องที่สามของตราประทับคือเวลา UTC ตั้งแต่วันที่ 1 มกราคม 1970 เวลาเริ่มต้น
รูปแบบคือ YYMMDD เวลาปัดเศษลงเป็นวันที่ใกล้ที่สุด ระยะเวลาที่ใช้ได้เริ่มต้นคือ 28
วัน

คุณสามารถระบุช่วงเวลาอื่นที่มีผลบังคับใช้กับ -e ตัวเลือก

"hashcash -cd -b 10 -e 2d -r foo 1:24:040806:foo::511801694b4cd6b0:1e7297a"
ลองตรวจสอบตราประทับเก่า ตราประทับด้านบนนี้สร้างขึ้นเมื่อ 11 ส.ค. 2002

เราให้ตัวเลือก -e 2d ดังนั้นวันหมดอายุของแสตมป์คือ 2 วันหลังจากสร้างซึ่งขณะนี้
ในอดีต

หมายเหตุ: หากแสดงเวลาในการสร้างเป็นตราประทับเป็นวัน การสร้างที่แม่นยำ
date คือจุดเริ่มต้นของวันที่ระบุในเวลา UTC (คล้ายกับหน่วยอื่น
เวลาที่สร้างจะถูกปัดเศษลงไปที่จุดเริ่มต้นของหน่วยที่แสดง)
สำหรับหน่วยเป็นวัน เช่น อาจหมายถึงขึ้นอยู่กับเขตเวลาของคุณที่
ตราประทับถือว่าไม่ถูกต้องภายในระยะเวลาที่กำหนดเป็นวัน
เทียบกับมุมมองญาติของคุณว่าวันนี้เป็นวันใด เนื่องจากการคำนวณขึ้นอยู่กับ
เวลาปัจจุบันใน UTC และเวลาที่สร้างตราประทับจะแสดงเป็นเวลา UTC

"hashcash -cd -b 10 -r foo 1:24:040806:foo::511801694b4cd6b0:1e7297a"
ทดสอบว่าตราประทับนั้นถูกต้องหรือไม่ เว้นแต่หมดอายุแล้ว ละเว้น -e
บอก hashcash ว่าแสตมป์ไม่มีวันหมดอายุ ระยะเวลาหมดอายุตลอดกาลยังสามารถ
ให้ชัดเจนดังนี้ -e 0โดยที่ระยะเวลาหมดอายุเป็น 0 หมายถึงตลอดไป

การกวาดล้าง เก่า แสตมป์

ถ้า -c, -d ใช้ตัวเลือกร่วมกันทุกครั้งที่มีการตรวจสอบตราประทับหากถูกต้องและ
ทุกแง่มุมบังคับของตราประทับได้รับการตรวจสอบแล้ว (การตรวจสอบบิตการชนกัน, ทรัพยากร
ตรวจสอบชื่อ) จากนั้นตราประทับและระยะเวลาหมดอายุจะถูกเขียนลงในไฟล์ฐานข้อมูล NS
ระยะเวลาหมดอายุเริ่มต้นถ้าไม่ได้กำหนดระยะเวลาหมดอายุไว้อย่างชัดเจนกับ -e ตัวเลือกคือ 28
วัน (เช่น แสตมป์จะหมดอายุหลังจาก 4 สัปดาห์)

สะระแหน่ก่อนแล้วจึงเพิ่มตราประทับ:

"hashcash -m -b 10 foo -e 1m > ตราประทับ"
หมายเหตุ: เราได้ระบุวันหมดอายุของเหรียญกษาปณ์ในตัวอย่างนี้ เพื่อให้แน่ใจว่าตราประทับ
เวลาสร้างจะได้รับในความละเอียดสูงเพียงพอในตราประทับที่ตราประทับจะไม่
ถือว่าหมดอายุในเวลาที่สร้าง (เรียกคืนความละเอียดเริ่มต้นเป็นวัน
ตราประทับที่สร้างขึ้นด้วยเวลาสร้างที่ปัดเศษลงไปที่จุดเริ่มต้นของวันคือ
ไม่น่าจะถือว่าใช้ได้ 1 นาทีต่อมา เว้นแต่คุณจะทำตอนเที่ยงคืน UTC
เวลา.)

"hashcash -cd -e 1m -b 10 -r foo < ตราประทับ"
แสตมป์จะหมดอายุใน 1 นาที รอ 1 นาทีแล้วแจ้งคำขอที่หมดอายุอย่างชัดเจน
แสตมป์ถูกล้าง:

"แฮชแคช -p ตอนนี้"
จากนั้นลองส่งตราประทับเดิมอีกครั้ง:

"hashcash -cd -e 1m -b 10 -r foo < ตราประทับ"
และตราประทับก็จะถูกปฏิเสธอยู่ดี เพราะมันหมดอายุ แสดงว่าเหตุใดจึงไม่ใช่
จำเป็นต้องเก็บตราประทับนี้ไว้ในฐานข้อมูล

ด้วยฐานข้อมูลเริ่มต้น (รูปแบบ sdb) เนื้อหาของฐานข้อมูลนั้นมนุษย์สามารถอ่านได้
เพื่อให้คุณสามารถดูเนื้อหาได้โดยจัดประเภทไว้ที่เทอร์มินัล:

"cat hashcash.sdb"
เพื่อดูว่ามีการเพิ่มตราประทับจริง ๆ แล้วหลังจาก puring ภายหลังถูกลบออกเนื่องจาก
หมดอายุ

การกวาดล้าง เก่า แสตมป์ on ความต้องการ

เพื่อความสะดวก คุณสามารถล้างข้อมูลได้พร้อมๆ กับการตรวจสอบตราประทับโดยใช้ปุ่ม -p ตัวเลือก
กับ -c ตัวเลือก

"hashcash -m -b 10 foo > ตราประทับ"
"hashcash -cd -p ตอนนี้ -e 1 -b 10 -r foo < ตราประทับ"
การล้างแสตมป์ทุกครั้งที่ใช้งานอาจไม่มีประสิทธิภาพ เนื่องจากฐานข้อมูลทั้งหมดจะต้องเป็น
สแกนหาแสตมป์หมดอายุ โดยให้ช่วงเวลากับ -p ตัวเลือกคุณสามารถบอก
"hashcash" เพื่อล้างไม่บ่อยกว่าช่วงเวลานั้นตั้งแต่การล้างครั้งก่อน

ตัวอย่างเช่น:

"hashcash -cd -p 1d -e 1 -b 10 -r foo < ตราประทับ"
บอก "hashcash" ให้ล้างแสตมป์ที่หมดอายุไม่เกินวันละครั้ง

"แฮชแคช -p 1M -j foo"
บอก "hashcash" ให้ล้างเฉพาะแสตมป์ที่หมดอายุจับคู่ทรัพยากร foo เดือนละครั้ง

"แฮชแคช -p ตอนนี้ -k"
บอก "hashcash" ให้ล้างแสตมป์ทั้งหมด (หมดอายุและยังไม่หมดอายุ) ทันที

ประทับ รูป (เวอร์ชั่น 1)


รูปแบบตราประทับปัจจุบันคือเวอร์ชัน 1 เครื่องมือนี้สามารถตรวจสอบ hashcash เวอร์ชัน 0 แสตมป์
เช่นกัน แต่ตราประทับเวอร์ชัน 0 จะไม่ถูกสร้างขึ้นอีกต่อไปเนื่องจากกำลังถูกเลิกใช้เพื่อสนับสนุน
รูปแบบตราประทับ v1 ที่ขยายได้มากขึ้น

Ver:บิต:ข้อมูล:ทรัพยากร:[ต่อ]:ทั้งหมด:ตอบโต้

ที่ไหน

Ver = 1
บิต = มีการอ้างว่ามีการชนกันบางส่วนกี่บิต
ข้อมูล = YYMMDD[อืม[ss]]
ทรัพยากร = สตริงทรัพยากร (เช่น ที่อยู่ IP ที่อยู่อีเมล)
ต่อ = ส่วนขยาย -- ละเว้นในเวอร์ชันปัจจุบัน
รูปแบบของนามสกุล:

[name1[=val1[,val2...]];[name2[=val1[,val2...]]...]]
โปรดทราบว่าค่าสามารถประกอบด้วย = ตัวอย่างส่วนขยาย (ไม่ใช่ของจริง):

name1=2,3;name2;name3=var1=2,var2=3,2,val

ซึ่งจะเป็นนามสกุล name1 มีค่า 2 และ 3; นามสกุล name2 ไม่มีค่า;
นามสกุล name3 มี 3 ค่า "var1=2", "var2=3", "2" และ "val" แฮชแคช
ส่วนขยายอาจตีความค่าตามที่เห็นสมควร เช่น "var1=2" อาจเป็นค่า
ของตัวเลือกสำหรับชื่อนามสกุล3.

ทั้งหมด = สตริงของอักขระสุ่มจากตัวอักษร a-zA-Z0-9+/= เพื่อหลีกเลี่ยงการชนกับ
แสตมป์ของผู้ส่งรายอื่น
ตอบโต้ = ในการหาตราประทับที่มีจำนวนบิตการชนกันที่ต้องการ ต้องลองหลายๆ อย่าง
สายต่าง ๆ ตัวนับนี้จะเพิ่มขึ้นในการลองแต่ละครั้ง เคาน์เตอร์ยังประกอบด้วย
ตัวอักษรจากตัวอักษร a-zA-Z0-9+/= (หมายเหตุ ไม่จำเป็นต้องดำเนินการใดๆ เพื่อ
นับตามลำดับ)

ใช้ hashcash ออนไลน์โดยใช้บริการ onworks.net



โปรแกรมออนไลน์ Linux และ Windows ล่าสุด