Secure Hash Algorithm (SHA) ได้รับการคิดค้นโดย National Security Agency (NSA) และเผยแพร่ในปี 1993 ผ่านสถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST) ในฐานะมาตรฐานการประมวลผลข้อมูลแห่งสหพันธรัฐของสหรัฐอเมริกา (FIPS PUB 180)
SHA ขึ้นอยู่กับและแบ่งปันหน่วยการสร้างที่คล้ายคลึงกันกับอัลกอริธึม MD4 การออกแบบ SHA ได้แนะนำกระบวนการใหม่ที่พัฒนาอินพุตบล็อกข้อความ 16 คำให้กับฟังก์ชันการบีบอัดเป็นบล็อก 80 คำระหว่างสิ่งอื่น
การประมวลผลของ SHA ทำงานดังนี้ -
ขั้นตอนที่ 1 − ต่อท้าย padding bits − ข้อความต้นฉบับถูกเสริมและระยะเวลาของข้อความนั้นเท่ากันกับ 448 โมดูโล 512 ช่องว่างภายในจะถูกแทรกอย่างต่อเนื่องแม้ว่าข้อความจะมีความยาวตามที่ต้องการอยู่แล้ว ช่องว่างภายในประกอบด้วย 1 ตัวเดียวตามด้วยจำนวนที่จำเป็นของ 0 บิต
ขั้นตอนที่ 2 − ต่อท้ายความยาว บล็อก 64 บิตที่ถือว่าเป็นจำนวนเต็ม 64 บิตที่ไม่ได้ลงนาม (ไบต์ที่สำคัญที่สุดก่อน) และการกำหนดความยาวของข้อความต้นฉบับ (ก่อนการเติมในขั้นตอนที่ 1) จะถูกเพิ่มลงในข้อความ ความยาวของข้อความทั้งหมดเป็นทวีคูณของ 512
ขั้นตอนที่ 3 −เริ่มต้นบัฟเฟอร์ บัฟเฟอร์ประกอบด้วยรีจิสเตอร์ห้า (5) รีจิสเตอร์ 32 บิตแต่ละตัวระบุโดย A, B, C, D และ E บัฟเฟอร์ 160 บิตนี้สามารถใช้เพื่อส่งผลต่อผลลัพธ์ชั่วคราวและขั้นสุดท้ายของฟังก์ชันการบีบอัด รีจิสเตอร์ทั้งห้านี้เริ่มต้นเป็นจำนวนเต็ม 32 บิตต่อไปนี้ (ในรูปแบบเลขฐานสิบหก)
A =67 45 23 01
B =ef cd ab 89
C =98 ba dc fe
D =10 32 54 76
E =c3 d2 e1 f0
รีจิสเตอร์ A, B, C และ D จริง ๆ แล้วเหมือนกับรีจิสเตอร์สี่ตัวที่ใช้ในอัลกอริธึม MD5 แต่ใน SHA-1 ค่าเหล่านี้จะถูกบันทึกในรูปแบบ big-endian ซึ่งกำหนดว่าไบต์ที่สำคัญที่สุดของคำจะอยู่ในตำแหน่งไบต์ที่อยู่ต่ำ ดังนั้นค่าเริ่มต้น (ในรูปแบบเลขฐานสิบหก) จึงเกิดขึ้นดังนี้ −
word A =67 45 23 01
word B =ef cd ab 89
word C =98 ba dc fe
word D =10 32 54 76
คำ E =c3 d2 e1 f0
ขั้นตอนที่ 4 − ประมวลผลข้อความในบล็อก 512 บิต − ฟังก์ชันการบีบอัดแบ่งออกเป็น 20 ขั้นตอนตามลำดับ รวมถึงการประมวลผลสี่รอบโดยแต่ละรอบประกอบด้วย 20 ขั้นตอน
สี่รอบมีโครงสร้างเหมือนกันโดยมีความแตกต่างเพียงอย่างเดียวที่แต่ละรอบต้องการฟังก์ชันบูลีนที่แตกต่างกัน ซึ่งสามารถกำหนดเป็น f1, f2, f3, f4 และหนึ่งในสี่ค่าคงที่การเติม Kt (0 ≤t ≤79) เป็นไปตามขั้นตอนที่พิจารณา
ขั้นตอนที่ 5 − ผลลัพธ์ − หลังจากประมวลผลบล็อกข้อความ 512 บิตสุดท้าย t (โดยพิจารณาว่าข้อความถูกแบ่งออกเป็น t บล็อก 512 บิต) และสามารถรับข้อความไดเจสต์ขนาด 160 บิตได้