context-&gt;state[2] = 0x98badcfe;
context-&gt;state[3] = 0x10325476;
void Update(MD5_CTX *context, byte *input, uint inputLen)
uint i, index = (uint)((context-&gt;count[0] » 3) &amp; 0x3F);
if ((context-&gt;count[0] += ((uint)inputLen « 3)) &lt; ((uint)inputLen « 3))
context-&gt;count[1]++;
context-&gt;count[1] += ((uint)inputLen » 29);
uint partLen = 64 - index;
if (inputLen &gt;= partLen) {
memcpy((byte *)&amp;context-&gt;buffer[index], (byte *)input, partLen);
MD5Transform(context-&gt;state, context-&gt;buffer);
for (i = partLen; i + 63 &lt; inputLen; i += 64)
MD5Transform(context-&gt;state, &amp;input[i]);
index = 0;
else i = 0;
memcpy((byte *)&amp;context-&gt;buffer[index], (byte *)&amp;input[i], inputLen - i);
void Final(byte digest[16], MD5_CTX *context)
byte bits[8];
uint index, padLen;
Encode(bits, context-&gt;count, 8);
index = (uint)((context-&gt;count[0] » 3) &amp; 0x3f);
padLen = (index &lt; 56) ? (56 - index) : (120 - index);
Update(context, PADDING, padLen);
Update(context, bits, 8);
Encode(digest, context-&gt;state, 16);
memset((byte *)context, 0, sizeof(*context));
שימושים נפוצים.
בשל העובדה שהפלט רגיש מאוד לשינויים בקלט (ההודעה), MD5 מאפשר יצירת "חתימה" לכל פלט נתון.
עובדה זו מאפשרת להשתמש בו ביישומים כגון:
ביטחון.
MD5 לא בטוח כיום לשימוש קריפטוגרפי והוא הוצא ממרבית התקנים וכן מ-SSL לאחר שהתגלו בו בעיות ופגמים רבים. למרות זאת הוא עדיין קיים בשימוש מוגבל. ב-1996 התגלה פגם בתכנון MD5 שבזמנו לא נחשב לבעיה חמורה, אולם לאור הממצאים מומחי הצפנה המליצו כבר אז לעבור לאלגוריתמים טובים יותר כמו פונקציות הגיבוב ממשפחת SHA שבחלקם התגלו גם הם כבעייתיים. ב-2004 הוכח ש-MD5 אינו מספק את המטרה העיקרית לשמה הוא פותח; עמידות מפני התנגשויות, כלומר אמור להיות קשה מאוד מבחינה חישובית למצוא שני קלטים שונים שאם מזינים אותם לפונקציית הגיבוב מקבלים פלט זהה. מסיבה זו MD5 אינו מתאים לתעודת מפתח ציבורי או חתימה דיגיטלית שהם מסתמכים על ההנחה שהתנגשויות בלתי אפשריות (חישובית). באותה שנה קבוצת חוקרים גילו פגמים חמורים נוספים. הם הראו איך אפשר להכין שני מסמכים שונים כך שיפיקו תמצית MD5 זהה. בשנים שלאחר מכן חלה התקדמות נוספת בשבירת האלגוריתם. בדצמבר 2008 קבוצת חוקרים השתמשה בטכניקות שהתגלו כדי לזייף תעודת מפתח ציבורי בתוך מספר שעות. נכון לשנת 2010 הוכרז על ידי ארגון SEI כי אלגוריתם MD5 נפרץ לחלוטין ואינו מתאים יותר לכל שימוש קריפטוגרפי. יישומים ממשלתיים נדרשים כיום להשתמש ב-SHA-2. ב-2012 נוזקת להבה ניצלה את חולשות MD5 כדי לזייף חתימה דיגיטלית של מיקרוסופט. כיום קיימות התקפות התנגשויות נגד MD5 שמסוגלות למצוא התנגשות בתוך שניות על מחשב ביתי. יתרה מזו, קיימת התקפה שנקראת chosen-prefix (תחילית-נבחרת) שמאפשרת ליצור התנגשות עבור שני קלטים עם תחילית קבועה בתוך מספר שעות עם חומרה סטנדרטית.
למרות זאת נכון לשנת 2016 אלגוריתם MD5 נמצא עדיין בשימוש, אם כי מוגבל, משיקולי יעילות. אף על פי שקיימים אלגוריתמים טובים יותר כמו SHA-3 או BLAKE אלגוריתם MD5 ידוע בפשטותו ומהירותו, לכן ישנן חברות אבטחה שעדיין עושות בו שימוש.
קווין קיגן
ג'וזף קווין קיגן (אנגלית: Joseph Kevin Keegan; נולד ב-14 בפברואר 1951) הוא כדורגלן עבר ומאמן כדורגל אנגלי יליד יורקשייר, לשעבר שחקן ומאמן נבחרת אנגליה. לאחר חזרה מפרישה אימן את ניוקאסל יונייטד.
קריירה.
לאחר שהחל את הקריירה שלו כקשר סקאנתורפ יונייטד, במדיה רשם 120 הופעות, עבר קיגן לליברפול בקיץ 1971 תמורת 35,000 לירות שטרלינג. ביל שאנקלי החליט להסב אותו לחלוץ לאחר משחק אימון בטרם התחילה העונה והוא מצידו הבקיע שער לאחר 12 דקות בהופעת הבכורה שלו בליגה מול נוטינגהאם פורסט.
ב-1972 ערך את הופעת הבכורה שלו בנבחרת במשחק נגד ויילס בקארדיף.
ב-1973 הובילו צמד החלוצים קיגן וג'ון טושאק את ליברפול לאליפות ראשונה מזה שבע שנים ולזכייה בגביע אופ"א, לאחר שקיגן הבקיע צמד במשחק הראשון מבין שני משחקי הגמר נגד בורוסיה מנשנגלדבך.
צמד נוסף של קיגן בגמר גביע הביא לליברפול את הגביע האנגלי ב-1974 לאחר שגברה 3:0 על ניוקאסל יונייטד. ב-1976 שחזרה ליברפול את הדאבל של 1974 (אליפות וגביע אופ"א) והפעם הבקיע קיגן גם בבית וגם בחוץ נגד קלאב ברוז'.
עונת השיא של קיגן בליברפול הייתה עונתו האחרונה. לאחר שהכריז באמצע העונה על כוונתו לעזוב בסופה כדי לשחק בחו"ל, עזר קיגן לליברפול לזכות באליפות ולראשונה גם בגביע אירופה לאלופות ב-1977. במשחק הגמר שנערך ברומא פגשה הקבוצה שוב את היריבה המוכרת בורוסיה מנשנגלדבך וקיגן הוכיח שוב את יכולתו במשחקים חשובים כשסחט מברטי פוגטס עברה ברחבה ובעיטת עונשין מ-11 מטר.
למגינת לבם של אוהדי הקבוצה, מכרה ליברפול את כרטיסו להמבורג תמורת חצי מילון לירות שטרלינג בסוף אותה עונה. קיגן עזב את ליברפול כשבאמתחתו 100 שערים ב-323 הופעות. מי שיועד להחליפו אצל האדומים היה קני דלגליש.
עם קבוצתו הגרמנית זכה קיגן לא רק בדאבל (ב-1979) אלא גם בהכרה ביכולתו האישית: שני תוארי כדור הזהב ברצף ב-1978 וב-1979. ב-1982 חזר לאנגליה ושיחק בסאות'המפטון ובניוקאסל, איתה עלה לליגה הראשונה.
מינויו של בובי רובסון לתפקיד מאמן הנבחרת לאחר גביע העולם ב-1982 בישר את קץ הקריירה שלו כשחקן הנבחרת. לאחר ששמע מהתקשורת ולא מרובסון עצמו שהוא לא יהיה שחקן הרכב בנבחרת יותר, קיגן ביטא בפומבי את אי שביעות רצונו ולא שב יותר לשחק עבור ארצו. בעשר שנותיו כשחקן הנבחרת צבר 21 שערים ב-63 הופעות כולל 31 הופעות כקפטן, אך הנבחרת בתקופתו כשלה בניסיונה להעפיל לשני גביעי עולם (1974 ו-1978) כמו גם לאליפות אירופה שביניהם. הדקות הבודדות ששיחק כמחליף במונדיאל 1982, שגם בו לא עברה אנגליה את שלב הבתים השני, מהווים את סך כל הקריירה של קיגן בגביע העולם. קיגן היה פצוע ב-1982 ועשה מאמץ מיוחד להכשיר את עצמו כדי לשחק ולו משחק אחד במסגרת הזו.
בסוף עונת 1984 פרש קיגן ממשחק פעיל (לאחר ששוב נתן הודעה מוקדמת בראשית העונה) ועבר לגור בספרד, שם חי שבע שנים.
קריירת אימון.
ב-1992 חזר קיגן לאנגליה ולניוקאסל, אותה העלה ליגה בשנית, הפעם כמאמן. בחמש השנים שלו במועדון הצליח קיגן לא רק להביא את ניוקאסל לפרמייר ליג אלא אף לסיים במקום השני ב-1996, אחרי מאבק על האליפות עם מנצ'סטר יונייטד. המאבק האמור לווה גם במלחמה פסיכולוגית וחילופי האשמות בתקשורת בינו לבין אלכס פרגוסון. אולי חשובה יותר אפילו מהסגנות ב-1996 הייתה רכישת כרטיסו של אלן שירר מבלקברן רוברס תמורת 15 מיליון לירות שטרלינג - הסכום הגבוה ביותר ששולם עד אז עבור שחקן בעולם כולו. שירר הפך למנהיג הבלתי מעורער של הקבוצה ולשחקנה הגדול ביותר בכל הזמנים.
בינואר 1997 התפטר קיגן מתפקידו ומונה למנהל תפעולי של פולהאם מליגת המשנה השנייה (למעשה הליגה השלישית באנגליה). שנה לאחר מכן, כשריי וילקינס התפטר מאימון הקבוצה לקח עליו קיגן את התפקיד. הקבוצה שהייתה מדורגת במקום ה-18, זכתה באליפות ובמספר שיא של נקודות, אולם עזיבתו בסוף העונה על מנת לקבל עליו את אימון הנבחרת עוררה את כעסם של אוהדיה.
תקופתו של קיגן כמאמן הנבחרת לא הייתה מוצלחת. הוא אמנם הצליח להשיג את הניצחונות הדרושים כדי להעפיל ליורו 2000 אך נכשל בטורניר עצמו. הוא התפטר מאימון הנבחרת לאחר ההפסד לגרמניה במשחק הראשון של מוקדמות מונדיאל 2002 (המשחק האחרון ששוחק באצטדיון ומבלי הישן).
עד לחזרתו מפרישה, התחנה האחרונה בקריירת האימון שלו הייתה מנצ'סטר סיטי שם, יחד עם שחקנים כניקולא אנלקה וכאייל ברקוביץ' הצליח בעונת 2001/02 לשבור את שיאי המועדון במספר נקודות ושערי זכות ולהעלות את הקבוצה לפרמייר ליג. בעונות שלאחר מכן הוא גם הצליח לבסס את הקבוצה בליגה ואפילו להשתתף עימה בגביע אופ"א. הכרטיס למפעל האירופי הוענק למועדון, שסיים רק במקום התשיעי בליגה, עבור משחק הוגן (fair play).
לאחר כארבע שנים בסיטי הודיע קיגן על התפטרותו ועל פרישתו מאימון, אך בשנת 2008 הוא חזר במפתיע למשרת המנג'ר בניוקאסל, לאחר שהקבוצה פיטרה את סם אלרדייז.
אנדראה פירלו
אנדראה פירלו (באיטלקית: Andrea Pirlo; נולד ב-19 במאי 1979) הוא כדורגלן עבר ומאמן כדורגל איטלקי המאמן את קבוצת פתיח קארגומרוק.
ככדורגלן פירלו שיחק בעמדת הקשר המרכזי. פירלו שיחק רוב הקריירה שלו במילאן, עמה זכה בשתי אליפויות איטליה ופעמיים בליגת האלופות. הוא עבר ממילאן ליובנטוס, עמה זכה בארבע אליפויות רצופות. את נבחרת איטליה ייצג מעל ל-100 פעמים, וזכה עמה במונדיאל 2006.
קריירת קבוצות.
תחילתו של הרענייני.
פירלו נולד בפלרו שבמחוז לומברדיה באיטליה, ליד ברשה, למשפחת עסקים עשירה מתעשיות הפלדה. הייתה לו האפשרות להשתלב בעסקי המשפחה, אך הוא פנה לכדורגל מקצועי, והחל את הקריירה שלו בברשה כקשר התקפי. לאחר שלוש שנים במדי הקבוצה הבוגרת, הוא עבר לשחק באינטר מילאנו. בעונתו הראשונה מיעט פירלו לשחק, וקבוצתו סיימה את הליגה במקום השמיני. בעונה שלאחר מכן הושאל לרג'ינה למשך עונה, בה שיחק בקביעות יחסית. בעונה הבאה, עונת 2000/01 חזר לאינטר, אך לאחר שערך 4 הופעות בחצי שנה, הושאל לברשה בחזרה עד לסוף העונה. בתקופה זו הוסט מהקישור הקדמי לעמדה אחורית יותר, בין אם כקשר אמצע או כקשר אחורי. פירלו עזר לברשה להגיע למקום השביעי בסרייה א' ולגמר גביע האינטרטוטו.
מילאן.