hashcash - מקוון בענן

זהו ה-hashcash הפקודה שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


hashcash - כלי נגד ספאם / מניעת שירות hashcash אמצעי נגד

תַקצִיר


מנטה (לִיצוֹר) חותמות:

חשיש -m [[ אפשרויות ] [ משאב ... ] ... ]

לבדוק חותמות:

חשיש -c [[ אפשרויות ] -r משאב ... ] [ חותמת ... ]

מהירות הערכות:

חשיש -s [ אפשרויות ] [ -b ביטים ]

לטהר מאגר מידע:

חשיש -p עַכשָׁיו [ -j משאב ] [ -k ] [ -t זמן ] [ -u ]

לִסְפּוֹר התנגשות סיביות:

חשיש -w [ אפשרויות ] [ חותמת ... ]

לקבל משאב שֵׁם:

חשיש -n [ אפשרויות ] [ חותמת ... ]

לקבל זמן נותר עד תפוגה

חשיש -l [ אפשרויות ] -e תקופה [ חותמת ... ]

תיאור


Hashcash הוא כלי נגד מדידת מניעת שירות. השימוש הנוכחי העיקרי שלו הוא לעזור
משתמשי hashcash נמנעים מאיבוד דואר אלקטרוני עקב אנטי ספאם מבוסס תוכן ומבוסס על רשימה שחורה
מערכות.

כלי ה-hashcash מאפשר לך ליצור חותמות hashcash לצרף למיילים שאתה שולח, וכן
כדי לאמת חותמות hashcash המצורפות למיילים שאתה מקבל. שולחי אימייל מצרפים hashcash
חותמות עם X-Hashcash: כותרת. מעודדים ספקים ומחברים של כלי אנטי ספאם
לפטור דואר שנשלח עם hashcash מהרשימות השחורות וכללי הסינון המבוססים על תוכן.

חותמת חשיש מהווה הוכחת עבודה אשר דורשת כמות עבודה הניתנת לפרמטר
לחשב עבור השולח. הנמען יכול לאמת חותמות שהתקבלו ביעילות.

פונקציית הוכחת עבודה של hashcash היא לחשב התנגשויות hash חלקיות (הhash SHA1
נעשה שימוש בפונקציה). על ידי בחירת מספר סיביות ההתנגשות, העבודה הנדרשת כדי
לחשב התנגשות יכולה להיות יקרה באופן שרירותי -- משברירי שנייה ועד
דקות או שעות. האימות יעיל ודורש אותה עלות קטנה בכל מקרה
גודל ההתנגשות.

לדיון מפורט יותר על יישומים אחרים השתמשו ב-hashcash עבור ראה
http://www.hashcash.org/

נוהג אורים


בדף אדם זה שם משאב הוא שם השירות או הכתובת שהחותמת היא
נוצר עבור. במקרה של דוא"ל, שם המשאב הוא כתובת הדוא"ל של הנמען ב
הצורה user@domain.com.

נטבע בולים

אל האני -m יש לתת דגל כדי להטביע בול.

ניתן להעביר את שם המשאב (כתובת הדואר האלקטרוני של הנמען) שאליו יש להטביע את החותמת
ארגומנט, או אם הושמט נקרא מ-stdin. אם stdin הוא tty, המשתמש מתבקש, if
stdin הוא צינור ששם המשאב פשוט נקרא בשקט. גודל ההתנגשות הרצוי יכול
יצוין עם האפשרות -b. אם לא צוין גודל התנגשות, ברירת המחדל היא 20
ביטים. ראה גם את -b ברירת מחדל אוֹפְּצִיָה.

בדיקה בולים

אל האני -c יש לתת דגל כדי לבדוק תפוגה של חותמות. ניתן לתת את החותמת לבדיקה בתור
טיעון ל-"hashcash". אם לא ניתנת חותמת החותמת נקראת מתוך stdin. אם stdin הוא א
tty המשתמש יתבקש, אם stdin הוא צינור, החותמת פשוט נקראת בשקט. א
שם המשאב (כתובת האימייל של הנמען) יכול להינתן עם -r אוֹפְּצִיָה. אם
שם המשאב ניתן שם המשאב מושווה לשם המשאב בחותמת, אם
הם לא תואמים, החותמת נדחתה.

הערה: אם לא ניתן שם משאב, החותמת נבדקת בכל מקרה כדי לראות אם זה אחרת
תקף, אבל זה יכול להיות מוטבע עבור משאב אחר, שיאפשר חותמות
נעשה שימוש חוזר במשאבים שונים, כך שה-hashcash יחזיר קוד יציאה לא מסומן ביציאה.

בולים נחשבים כברירת מחדל לתקפים למשך 28 ימים. תקופת התוקף יכולה להיות
השתנה באמצעות -e דגל.

אם החותמת פג או יש תאריך בעתיד החותמת נדחתה והתוכנית
יוצא מיד.

אם ניתן גודל התנגשות נדרש עם -b דגל, ערך הבולים מחושב ו
לעומת זאת, אם לבול אין ערך מספיק היא נפסלת, והתוכנית יוצאת
מיד. אם ה -b הדגל לא ניתן, החותמת נבדקת כדי לראות אם זה אחרת
תקף, אבל hashcash יחזיר קוד יציאה לא מסומן ביציאה.

אם הבול בילה כפול הבול נדחה. הגנת הוצאות כפולה היא
נדון ביתר פירוט להלן ב"הגנה על הוצאה כפולה". אם הוצאה כפולה
ההגנה אינה מופעלת, החותמת עשויה להתבזבז כפול, כך שה-hashcash יחזור
קוד יציאה לא מסומן (קוד יציאה 2) ביציאה.

אל האני -w ניתן להשתמש בדגל כדי לבקש שמספר הביטים של ההתנגשות ייספרו
ומוצג. ה -n ניתן להשתמש בדגל כדי לבקש ששם המשאב בחותמת הוא
מנותח ומוצג. ה -l ניתן להשתמש בדגל כדי לבקש את מספר השניות עד
תפוגה של החותמת היא פלט.

התוכנית תחזיר קודי יציאה תקפים או לא חוקיים רק אם -c נעשה שימוש בדגל, ה -b
נעשה שימוש בדגל, -d, -r משאב משומשים. אלו הן קבוצת האפשרויות המינימלית הדרושה
לבדוק היטב את תוקפו של חותמת. אם הקריטריונים הללו לא יתקיימו, התוכנית תתקיים
החזר קוד יציאה לא מסומן (קוד יציאה 2) ביציאה. (ראה גם את -y דֶגֶל.)

זוגי הוצאה הֲגָנָה

אם -d הדגל משמש בעת בדיקת בולים, מסד נתונים של בולים שהושקעו נשמר.

כברירת מחדל בולים יפוג לאחר 28 ימים, ללא תוקף מסד הנתונים יגדל
ללא הגבלה. אתה יכול לציין תקופת תפוגה חלופית עם -e דֶגֶל. ה
תקופת התפוגה המומלצת (וברירת המחדל) לאימייל היא 28 ימים. לאחר תקופת התפוגה
משך הזמן, החותמת בכל מקרה נחשבת כפג תוקף וייתכן שהיא תימחק ממסד הנתונים
כדי לחסוך מקום. (ראה "טיהור מעת לעת לעומת בגישה הבאה" כיצד לטהר בולים.)

מטעמי יעילות חותמת מאומתת לפני שהיא נבדקת במסד הנתונים; אם זה
אחרת לא תקין לא תתרחש פעילות מסד נתונים.

הערה: ההחלטה לגבי משך הזמן שהחותמת צריכה להיחשב תקינה תלויה ב
מאמת. אם זה קצר מדי זה אפשרי עבור כמה יישומים שהחותמת תהיה
יפוג לפני הגעה לנמען (למשל עם דוא"ל). הערך המוצע של 28 ימים
אמור להיות בטוח לעיכובים רגילים במסירת דואר אלקטרוני. הבחירה היא פשרה בין
גודל מסד הנתונים והסיכון לתפוגה לפני ההגעה, ותלוי באפליקציה.

הערה: לחותמות שונות באותו מסד נתונים יכולות להיות תקופות תוקף שונות, כך עבור
ניתן לאחסן בולים לדוגמה עבור משאבים שונים עם תקופות תוקף שונות
אותו מסד נתונים, או שהנמען עשוי לשנות את תקופת התוקף עבור חותמות עתידיות
מבלי להשפיע על תוקף הבולים הישנים.

טיהור מעת לעת vs on הַבָּא גִישָׁה

כדי לטהר בולים ישנים מעת לעת תוך בדיקת בולים השתמש ב- -p תקופה אפשרות לטיהור
לא מוקדם יותר מתקופת הזמן הנתונה מאז הטיהור האחרון. ניתן להשתמש בטיהור עם
-k אפשרות לטהר גם בולים שטרם פג, ועם -j משאב דגל לטיהור בלבד
חותמות עבור המשאב הנתון.

ישנן נסיבות שבהן זה עלול להיות לא נוח לטהר בולים בגישה הבאה,
למשל אם יש מסד נתונים גדול של הוצאה כפולה שלוקח קצת זמן לטיהור, וכן
זמן התגובה של בודק ה-hashcash חשוב. כדי למנוע בעיה זו, טיהור
ניתן לעשות בנפרד רק באמצעות -p עַכשָׁיו אפשרות לבקש רק את פעולת הטיהור.
ב-unix למשל, אתה יכול לקרוא "hashcash -p now" בעבודת cron פעם ביום, או ב-
ביקוש כאשר הדיסק היה אוזל.

מהירות אומדנים

אל האני -s הדגל מבקש מדידה של כמה התנגשויות ניתן לבדוק בשנייה. לא
הבול מוטבע, או מאומת.

אם -b הדגל משמש עם אפשרות זו, במקום הערכה של כמה שניות זה יהיה
take to mint מחושבת חותמת בגודל הנתון בסיביות. כדי לגלות כמה זמן זה
ייקח שימוש בבול בגודל ברירת מחדל -s -b ברירת מחדל.

הערות

כל פלט המידע מודפס על stderr. חותמות מוטבעות, ותוצאות חותמת
אימות ותזמון מודפסים על stdout. הדגל השקט -q מדכא הכל
פלט מידע. ה -v הדגל מבקש פלט מידע נוסף. המבוקש
פלט, שהוא המידע היחיד שמופק במצב שקט (מתי -q צוין)
מודפס על פלט רגיל. אם stdout הוא צינור, או כאשר מצב שקט פועל
הפלט מודפס ללא תיאור (כלומר רק ביטים, רק שניות, רק משאב).

אפשרויות


-c בדוק את פרטי התפוגה של חותמות שניתנו כטיעון או ב-stdin. (תשתמש עם
-b, -d ו -r משאב לבדיקת חותמות מלאה).

-m חותמות מנטה עם המשאבים שניתנו כטיעונים או בסטדין.

-b ביטים
בעת הטבעת בול, צור התנגשות של לפחות כל כך הרבה ביטים. בעת אימות א
חותמת דורשת שתהיה לו התנגשות של לפחות כל כך הרבה ביטים, אחרת לדחות
זה. אם הושמט, נעשה שימוש ברירת המחדל.

בעת בדיקת חותמות, דרוש שהחותמות יהיו בעלות כל כך הרבה ביטים.

ניתן לציין את מספר הסיביות המוגדר כברירת מחדל עם -b ברירת מחדל. ביטים יחסית ל
ניתן לציין ברירת מחדל גם עם -b +n עבור n סיביות יותר מברירת המחדל ו -b -n
עבור n סיביות פחות מברירת המחדל.

-b ברירת מחדל, -b +0 ו -b -0 כולם שוות ערך.

בעת ביצוע מבחן המהירות -s, יכול למדוד את המהירות של אסימון ברירת המחדל איתו -s -b
ברירת מחדל.

-r משאב
בעת הטבעת בולים, שם המשאב (כתובת הדואר האלקטרוני של הנמען) לטביעת הבול
נגד ניתן לתת או עם -r משאב או כטיעון ל"חשיש".

בעת בדיקת חותמות, שם המשאב (כתובת הדואר האלקטרוני שלך) מסופק עם -r
אוֹפְּצִיָה. אם ניתן שם המשאב הוא נבדק מול שם המשאב ב-
חותמת, ואם אינם תואמים החותמת נפסלת. שים לב אם שם המשאב הוא
לא ניתן, חותמות למשאבים אחרים יתקבלו, ולכן חשיש
מחזיר קוד יציאה לא מסומן (קוד יציאה 2) ביציאה.

-o בעת אימות חותמות ניתן לתת משאבים מרובים. כברירת מחדל המשאבים הם
פשוט נבדק אחד אחד עד שנמצא משאב חוקי תואם. אולם כאשר אתה
השתמש בתווים כלליים או בביטויים רגולריים (ראה -E), כדאי להיות מסוגל לציין זאת
משאב אחד גובר על אחר. למשל זה: -ב15 -r adam@dev.null -o -ב10
*@dev.null מציין כי דואר לכתובת adam@dev.null דורש 15 סיביות, אבל דואר אל
*@dev.null דורש רק 10 ביטים. אם השמטנו את -o לעקוף את הקשר בין
שני המשאבים, חותמת של 10 סיביות תתקבל לכתובת adam@dev.null
כי למרות שזה יידחה כבעל קטעים לא מספיקים לפי הכלל הראשון,
זה יתקבל לפי הכלל השני. ה -o האפשרות מאפשרת לך להימנע מבעיה זו.

-e זמן
תקופת תפוגה עבור בולים שהושקעו. בזמן בדיקת חותמות (באמצעות ה -c דגל), אם ה
הבול הוטבע יותר מהזמן שצוין לפני, הוא נחשב שפג תוקפו.
אם אפשרות זו אינה בשימוש, כברירת מחדל בולים יפוג לאחר 28 ימים. תקופת התפוגה
ניתן בשניות כברירת מחדל (ארגומנט של 0 פירושו לנצח). דמות אחת
ניתן להשתמש בסיומת כדי לציין יחידות חלופיות (מ = דקות, h = שעות, d = ימים, M =
חודשים, y = Y = שנים, ו-s = שניות).

אם משתמשים ב- -d אפשרות, הבול שהוצא ותקופת התפוגה שלו נרשמים ב-
מאגר מידע. ראה את -p אפשרות לתיאור כיצד לטהר בולים ממסד הנתונים.

בזמן הטבעת בולים, ה -e הדגל יכול להשפיע על רזולוציית הזמן שנוצר
בבול. בלי ה -e אפשרות, ברירת המחדל היא ימים (פורמט זמן:
YYMMDD). פורמטים חלופיים המבוססים על טווח תקופת התפוגה הם כדלקמן:

בזמן ההטבעה אתה יכול גם לתת רוחב זמן מפורש עם -z אפשרות במקום זאת.
(-z מבטל -e אם שניהם ניתנים. אם אף אחד מהם לא נתון ברירת המחדל היא 6 תווים (זמן
פורמט: YYMMDD)).

הכללים לקביעה אוטומטית של רוחב זמן מתאים מ -e אם לא -z אוֹפְּצִיָה
נתון הם:

* תקופה >= שנתיים ולאחר מכן נעשה שימוש בפורמט הזמן YY מעוגל כלפי מטה לשנה הקרובה ביותר
הַתחָלָה;
* שנתיים < תקופה <= 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 ו- YYMMDDhhmms מעוגל כלפי מטה
ליום הקרוב, או הדקה הקרובה בהתאמה.

שימו לב שהעיגול כלפי מטה מבוסס על זמן UTC, לא על שעון מקומי. זה יכול להוביל ל
תוצאות מפתיעות בתחילה בעת עיגול מטה לימים למשל באזורי זמן שאינם GMT
(UTC = GMT). ייתכן שיהיה ברור יותר להבין אם אתה משתמש ב- -u אוֹפְּצִיָה.

-g תקופה
אל האני -g האפשרות היא לשימוש בעת בדיקת חותמות hashcash עם -c אפשרות ו
מציין תקופת חסד עבור הטיית שעון, כלומר אם מגיעה חותמת חשיש עם תאריך ב
העתיד או העבר הוא לא יידחה כבעל תאריך עתידני (או כ
פג תוקף) אלא אם הוא עתידני יותר (או פג תוקפו למשך זמן רב יותר) מזה
פרק זמן. ברירת המחדל היא יומיים, כלומר כל עוד השעון של המערכת השולחת
לא יותר מיומיים לפני (או אחרי יומיים) של השעון של המערכת הקולטת,
חותמת חשיש עדיין תתקבל.

יחידות ברירת המחדל עבור תקופת החסד הן שניות. ניתן להשתמש בסיומת תו בודד
כדי לציין יחידות חלופיות (מ = דקות, h = שעות, d = ימים, M = חודשים, y = Y =
שנים, ו-s = שניות).

-d אחסן בולים במסד נתונים של הוצאה כפולה. אם בול נראתה לפני כן
נדחה גם אם זה תקף אחרת. קובץ מסד הנתונים המוגדר כברירת מחדל הוא database.sdb in
הספרייה הנוכחית. רק אחרת חותמות תקפות יישמרו במאגר הנתונים.
רק חותמות מאומתות במלואן יאוחסנו במסד הנתונים, אלא אם כן -y האפשרות היא
נָתוּן.

-f dbname
השתמש dbname במקום שם קובץ ברירת מחדל עבור מסד נתונים של הוצאה כפולה.

-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-Hashcash של אימייל ה-Hashcash 'X-Hashcash: ' לפני החותמת.
ללא אפשרות זו רק החותמת החשופה מודפסת.

בעת בדיקה, לאחר סריקת חותמות שניתנו כטיעונים, סורק סטדין לאיתור שורות
החל במחרוזת 'X-Hashcash:', ומשתמש בשאר השורה התואמת בתור
חותמת. רק השורות עד והמסתיימות בשורה הריקה הראשונה נסרקות (ראה גם
-i דגל שניתן להשתמש בו כדי לעקוף זאת). שורה ריקה היא המפריד הרגיל
הפרד את הכותרות מגוף הודעת דואר או מאמר USENET. הכוונה היא
כדי שיהיה נוח להעביר הודעת דואר או מאמר USENET ל-hashcash ב-stdin.

-x הארכה
מחרוזת הרחבה המורכבת מקבוצות ערכי שמות. פורמט ההרחבה מתואר
להלן בסעיף על פורמט חותמת ה-Hashcash. זה מאפשר למשתמשים להגדיר את שלהם
הרחבות חותמות משלו אשר מועברות אל הבול, מאומתות על ידי הנמענים
תומכים בהם, ומתעלמים מהנמענים שאינם תומכים בהם. שימו לב להרחבה
מנגנון וו עדיין לא יושם. זה יגיע במהדורה הבאה.

-i בעת בדיקה ושימוש ב -X דגל, התעלם מהגבול של השורה הריקה בין הכותרות
וגוף ההודעה, ובדוק אם יש התנגשות גם בגוף אם לא נמצא
בכותרות.

-t זמן
העמד פנים שהשעה הנוכחית היא הזמן שניתן למטרות טביעת בולים, אימות
חותמות וטיהור בולים ישנים מהמאגר. הזמן ניתן בפורמט המבוסס על
פורמט UTCTIME YYMMDD[hhmm[ss]].

הזמן מבוטא בזמן מקומי כברירת מחדל. תשתמש עם -u דגל כדי לתת זמן ב-UTC
(שעון גריניץ).

אתה יכול גם לתת זמן ביחס לזמן הנוכחי על ידי הקדמת הארגומנט עם +
או -. יחידות ברירת המחדל לזמן יחסי הן שניות. סיומת תו בודד יכולה
לשמש לציון יחידות חלופיות (m = דקות, h = שעות, d = ימים, M = חודשים, y =
Y = שנים, ו-s = שניות).

הערה: כאשר הזמן מתבטא בזמן מקומי, אם יש שעון קיץ שלך
אזור זמן, יש שעה אחת או שתיים לא ברורות בשנה בזמן השינוי מ
שעון קיץ לשעון רגיל.

-u קלט ופלט זמנים מוחלטים ב-UTC (GMT) במקום בזמן מקומי.

-a תקופה
הוסף (או החסר אם המספר שלילי) ערך אקראי מהזמן הנוכחי שלפניו
טביעת הבול. זה מסתיר את הזמן שבו נוצרה הבול, דבר שעשוי להיות שימושי עבורו
משתמשים אנונימיים. הערה הוספת (במקום לגרוע) זמן אקראי עשויה להיות מסוכנת אם
החותמת לוקחת פחות מהזמן שנוסף להגיע מכיוון שהנמען ידחה חותמות
עם חותמות זמן בעתיד.

-n שם משאב ההדפסה מנותח מהחותמת המאומתת. מחזיר את קוד היציאה לא מסומן
יציאה.

-l הדפס את מספר השניות שנותרו לפני שתוקף החותמת יפוג. מחזיר את קוד היציאה לא מסומן
יציאה.

הערה: החישוב כולל את תקופת החסד, כך שיכול להיות עד פי 2 תקופת החסד
ארוך יותר ממה שאתה יכול לצפות אחרת (שעון מהיר אבל המערכת צריכה להניח שזה יכול
להיות איטי). אם ברצונך לא לכלול את תקופת החסד הוסף -ג0 כדי להגדיר את תקופת החסד ל-0
לחישוב.

-w הדפס מספר פיסות התנגשות של חותמת. מחזיר את קוד היציאה לא מסומן ביציאה.

-y מחזיר הצלחה אם החותמת תקפה גם אם היא לא מסומנת במלואה. תשתמש עם -c
איפה לא כולם -d, -r צוינו כדי לקבל קוד יציאה הצלחה בתקף אך חלקי
חותמת מסומנת. באופן דומה יכול להשתמש עם -n, -l, -w עם אותו אפקט.

-M בעת בדיקת חותמות, אפשר תווים כלליים * התאמה בשם המשאב כדי להפוך אותו
פשוט יותר לציין מספר כתובות דוא"ל ולאפשר התאמת כתובות תמציתיות
וכתובות כולל תת-דומיינים. זוהי ברירת המחדל. ראה גם -S, -E ו -C

-S בעת בדיקת חותמות השתמש בהשוואה בטקסט פשוט כדי להשוות את שמות המשאבים לאלו שנמצאים
בולים. ראה גם -M, -E ו -C.

-E בעת בדיקת חותמות השתמש בביטויים רגולריים כדי לציין שמות משאבים כדי ליצור אותו
פשוט יותר לציין כתובות דוא"ל מרובות, כתובות תופסות, סוגים של הרחבות
כתובות וכתובות כולל תת-דומיינים. שימו לב שתחביר הביטוי הרגולרי הוא POSIX
סגנון: אין צורך לצטט תווים מיוחדים כדי לקבל את המשמעות המיוחדת שלהם; אבל
יש לצטט אותם עם \ לתו זה במחרוזת החיפוש. ה
לביטוי רגולרי נוספו אוטומטית ^ בהתחלה ו-$ נוסף בסוף,
אם הם לא מצוינים. התווים המיוחדים ^ תואמים את ההתחלה של
resouce, ו-$ מתאים לסוף המשאב.

(שים לב שגם אם הוא מורכב עם ביטויים רגילים של BSD, נעשה שימוש בתחביר בסגנון POSIX; גם
הערה ביטויים רגולריים של BSD אינם תומכים בטווחים {}.)

-C כברירת מחדל, המשאבים עוברים קנוניזציה לאותיות קטנות בעת ההטבעה ובבדיקה. ה
-C הדגל עוקף זאת כך שהמשאבים יטופלו כרגישים לאותיות רישיות בבדיקה,
ולא קנוניזציה על טביעה.

-P הדפס מידע על התקדמות (מספר איטרציות, איטרציות צפויות, אחוז ביצוע, הטוב ביותר
גודל הבול שנמצא עד כה).

-O הליבה
בחר ליבת hashcash עם המספר הזה. כרגע 0-9 הן ליבות חוקיות. לא כל הליבות
לעבוד על כל הארכיטקטורות. למשל, חלקם הם אסמבלר ספציפי ל-x86, אחרים ספציפיים ל-PPC
מאסף. אם ליבה לא חוקית hashcash מחזירה כשל ומסבירה מה
קרה.

-Z n
דחוס את החותמת. זוהי פשרה בין זמן לחלל. בולים גדולים יותר הם מהירים יותר, אבל
אפשר לטעון מעט מכוער. עבור החותמות המהירות ביותר (ברירת המחדל) השתמש ב-Z 0; עבור חלקית
בולים דחוסים משתמשים ב-Z 1; עבור חותמות דחוסות מאוד, אך איטיות במקצת, השתמש ב-Z 2.
(הערה: עקב באג שהתגלה מאוחר, -Z2 זהה ל-Z1 לעת עתה עד שאוכל לתקן
זֶה.)

דוגמאות


יוצרים בולים

"חשמל -ים"
הדפס מידע תזמון על כמה התנגשויות המכשיר יכול לנסות בשנייה.

"hashcash -sv"
מידוד מדויק יותר אך איטי למדי של טביעה ספציפית למעבדים שונים
ליבות.

"hashcash -s -b ברירת מחדל"
הדפס כמה זמן ייקח למכונה לחשב התנגשות בגודל ברירת מחדל (אבל
אל תחשוב למעשה התנגשות).

"hashcash -s -b 32"
הדפס כמה זמן ייקח למכונה לחשב התנגשות של 32 סיביות (אבל לא
למעשה מחשב התנגשות).

"hashcash -m"
טביעו בול. יבקשו שם משאב וטבעה עם ערך ברירת מחדל (מספר של
סיביות התנגשות).

"hashcash -m foo"
התנגשות מחשוב על משאב foo. ייטבע עם ערך ברירת מחדל (מספר ההתנגשות
ביטים).

"hashcash -m foo -b 10"
חישוב התנגשות של 10 סיביות על משאב foo.

"hashcash -a -3d"
הפחת זמן אקראי של בין 0 ימים ל-3 ימים מזמן יצירת הבול.
זהו אותו גורם fuzz המשמש את 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 time של באג 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"
כמו לעיל בדוק אם הבול בעל ערך מספיק, אך בנוסף בדוק כי
שם המשאב שניתן תואם את שם המשאב בחותמת.

זוגי הוצאה מניעה

ניתן לשנות את הדוגמאות שניתנו ב"אימות חותמות" כדי לשמור על מסד נתונים של הוצאה כפולה
כדי שאותה חותמת לא תתקבל פעמיים. שימו לב שחותמת תיעשה רק בצ'ק-אין
ונוספה למסד הנתונים אם הוא חוקי אחרת ונבדקה במלואה (מספר נדרש של
צוינו סיביות של התנגשות וצוין משאב).

"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 אז תאריך התפוגה של הבולים הוא יומיים לאחר היצירה, וזהו עכשיו
בעבר.

הערה: אם זמן היצירה מבוטא בבול בימים, היצירה המדויקת
תאריך הוא תחילת היום שצוין בזמן UTC (בדומה ליחידות חלופיות
זמן היצירה מעוגל כלפי מטה לתחילת היחידה שבה הוא מתבטא).
עבור יחידות בימים, למשל, זה עשוי להיות תלוי באזור הזמן שלך כי
נראה שהחותמת נחשבת כבלתי חוקית בתקופת התפוגה שצוינה בימים
יחסית לתפיסה היחסית שלך על איזה יום זה, כפי שהחישוב מבוסס עליו
השעה הנוכחית ב-UTC, וזמן יצירת הבול מבוטא בזמן UTC.

"hashcash -cd -b 10 -r foo 1:24:040806:foo::511801694b4cd6b0:1e7297a"
בדוק אם החותמת תקפה אחרת, מלבד שפג תוקפו. השמטת ה -e
אומר ל-hashcash שהחותמת לעולם לא תפוג. תקופת תפוגה של לנצח יכולה גם כן
ניתן בצורה מפורשת כך: -e 0, כאשר תקופת תפוגה של 0 פירושה לנצח.

טיהור זקן בולים

אם -c, -d משתמשים באפשרויות יחד, בכל פעם שחותמת נבדקת, אם היא תקפה ו
כל היבטי החובה של החותמת מאומתים (בדיקת סיביות התנגשות, משאב
בדיקת שם) ואז החותמת ותקופת התפוגה שלה נכתבת לקובץ מסד הנתונים. ה
תקופת תפוגה ברירת מחדל אם תקופת תפוגה לא ניתנת במפורש עם -e האופציה היא 28
ימים (כלומר בולים פג לאחר 4 שבועות).

תחילה נענע ולאחר מכן הוסף חותמת:

"hashcash -m -b 10 foo -e 1m > בול"
הערה: ציינו תפוגה על ההטבעה בדוגמה זו, כדי להבטיח שהחותמת
זמן היצירה ניתן ברזולוציה גבוהה מספיק בחותמת כך שהחותמת לא תעשה זאת
ייחשב כפג תוקף בזמן היצירה. (זכור שרזולוציית ברירת המחדל היא בימים,
בול שנוצר עם זמן יצירה מעוגל כלפי מטה לתחילת היום הוא
לא סביר שייחשב תקף כעבור דקה, אלא אם תטביע אותו בחצות UTC
זְמַן.)

"hashcash -cd -e 1m -b 10 -r foo < stempel"
תוקף החותמת יפוג בעוד דקה. המתן דקה אחת ואז בקש מפורשות שפג תוקפו
יש לטהר בולים:

"hashcash -p עכשיו"
לאחר מכן נסה לשלוח מחדש את אותה חותמת:

"hashcash -cd -e 1m -b 10 -r foo < stempel"
וממילא החותמת תידחה כיוון שפג תוקפו, הממחישה מדוע לא
הכרחי לשמור חותמת זו במסד הנתונים.

עם מסד הנתונים המוגדר כברירת מחדל (פורמט sdb) תוכן מסד הנתונים ניתן לקריאה אנושית,
כך שתוכלו לראות את תוכנם על ידי הצמדתם למסוף:

"cat hashcash.sdb"
לראות שהחותמת באמת מתווספת ואז לאחר הטיהור לאחר מכן מטוהרת עקב
תְפוּגָה.

טיהור זקן בולים on דרישה

לנוחות, אתה יכול לטהר במקביל לבדיקת חותמות על ידי שימוש ב -p אוֹפְּצִיָה
עם -c אוֹפְּצִיָה.

"hashcash -m -b 10 foo > חותמת"
"hashcash -cd -p now -e 1 -b 10 -r foo < stempel"
זה עשוי להיות לא יעיל לטהר חותמות בכל שימוש כפי שמסד הנתונים כולו צריך להיות
נסרק לאיתור בולים שפג תוקפם. על ידי מתן פרק זמן ל -p אפשרות, אתה יכול לדעת
"hashcash" כדי לטהר בתדירות גבוהה יותר מאשר פרק זמן זה מאז הטיהור הקודם.

לדוגמה:

"hashcash -cd -p 1d -e 1 -b 10 -r foo < stempel"
אומר ל"hashcash" לטהר כל בולים שפג תוקפם לא יותר מפעם אחת ביום.

"hashcash -p 1M -j foo"
אומר ל"hashcash" לטהר רק בולים שפג תוקפם התואמים למשאב foo פעם בחודש.

"hashcash -p עכשיו -k"
אומר ל"hashcash" לטהר את כל הבולים (פג תוקף ולא פג) עכשיו.

חותמת פוּרמָט (גִרְסָה 1)


פורמט החותמת הנוכחי הוא גרסה 1. כלי זה יכול לאמת חותמות גרסה 0 של hashcash
כמו כן, אך חותמות גרסה 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

לאיזו סיומת שם1 יש ערכים 2 ו-3; סיומת name2 אין ערכים;
להרחבה שם3 יש 3 ערכים "var1=2", "var2=3", "2" ו-"val". החשאש
ההרחבה עשויה לפרש את הערכים כראות עיניה, למשל "var1=2" יכול להיות הערך
של אפשרות לשם הרחבה3.

שורה = מחרוזת תווים אקראיים מהאלפבית a-zA-Z0-9+/= כדי למנוע התנגשויות עם
חותמות של שולח אחר
נגד = כדי למצוא חותמת עם המספר הרצוי של סיביות התנגשות צריך לנסות הרבה
מחרוזות שונות המונה הזה מוגדל בכל ניסיון. המונה מורכב גם מ
תווים מהאלפבית a-zA-Z0-9+/=. (שים לב שאין צורך ביישום
לספור ברצף).

השתמש ב-hashcash באינטרנט באמצעות שירותי onworks.net



התוכניות המקוונות האחרונות של לינוקס ו-Windows