הצפנת בלום-גולדווסר – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
שורה 43:
לצורך הכנת מפתחות המקבל בוחר ראשוניים מתאימים נניח <math>\ p=643</math> ו-<math>\ q=859</math> ומחשב את <math>\ n=pq=552337</math> ואז מחשב את משוואת אוקלידס <math>\ 171\cdot 643+-128\cdot 859=1</math> כך ש-<math>\ a=171,b=-128</math>. המפתח הפומבי הוא אם כן <math>\ 552337</math> והמפתח הפרטי הוא <math>\ (643,859,171,-128)</math>.
 
כעת אם השולח מעוניין להצפין את המסר <math>\ m=\mbox{9C5B82}</math> (בייצוג [[בסיס הקסדצימלי|הקסדצימלי]], בסה"כ 24 סיביות). הוא מחשב תחילה את <math>\ \left\lfloor\log_2(552337)\right\rfloor=19</math> ואז <math>\ h=\left\lfloor\log_2(19)\right\rfloor=4</math> ואז מחלק את סיביות המסר לשישה גושים בני ארבע סיביות כל אחד ומתקבל:
: <math>\ m_1=1001,m_2=1100,m_3=0101,m_4=1011,m_5=1000,m_6=0010</math>
כעת בוחר גרעין התחלתי אקראי, נניח <math>\ x=201036</math> (שהוא <math>\ 21403^2\mbox{ mod }552337</math>). הצפנת המסר <math>\ m</math> מוצגת בטבלה הבאה, כאשר <math>\ p_i</math> מייצג את ארבע הסיביות הנמוכות של <math>\ x_i</math>, בכל שלב לאחר העלאת <math>\ x_i</math> בריבוע מחשבים את <math>\ c_i=p_i\oplus m_i</math>: