ในการพัฒนาระบบแอปพลิเคชันต่าง ๆ ข้อมูลผู้ใช้มักจะจำเป็นและรหัสผ่านของผู้ใช้จะถูกเก็บไว้ในหลาย ๆ ที่ เห็นได้ชัดว่าไม่ปลอดภัยในการจัดเก็บรหัสผ่านผู้ใช้โดยตรงบนเซิร์ฟเวอร์ บทความนี้แนะนำอัลกอริทึมการเข้ารหัส MD5 ที่ใช้กันทั่วไปในการทำงานโดยย่อโดยหวังว่าจะดึงดูดความสนใจ
(i) การแนะนำข่าวสรุป
Message Digest เป็นลายนิ้วมือดิจิตอลของบล็อกข้อมูล นั่นคือบล็อกข้อมูลที่มีความยาวใด ๆ ถูกคำนวณเพื่อสร้างลายนิ้วมือที่ไม่ซ้ำกัน (สำหรับ SHA1 มันคือการผลิตอาร์เรย์ไบนารี 20 ไบต์) Message Digest เป็นเทคนิคที่ใช้ร่วมกับรหัสการตรวจสอบข้อความเพื่อให้แน่ใจว่ามีความสมบูรณ์ของข้อความ อัลกอริทึมฟังก์ชันแฮชแบบทางเดียวส่วนใหญ่จะใช้ซึ่งสามารถใช้เพื่อตรวจสอบความสมบูรณ์ของข้อความและบันทึกโดยตรงในข้อความผ่านรหัสผ่านแฮช ปัจจุบันอัลกอริทึมที่ใช้กันอย่างแพร่หลาย ได้แก่ MD4, MD5 และ SHA-1
ข้อความย่อยมีคุณสมบัติพื้นฐานสองประการ:
ข้อความที่แตกต่างกันสองข้อความนั้นยากที่จะสร้างการย่อยเดียวกัน
เป็นการยากที่จะสร้างข้อความสำหรับการย่อยที่ระบุและการย่อยที่ระบุสามารถอนุมานได้จากข้อความ
ตัวแทน: SHA1 ของสถาบันมาตรฐานและเทคโนโลยีแห่งชาติและ MD5 โดย Ronald Rivest of MIT
(ii) เข้ารหัสสตริง
/ ** ใช้ md5 สำหรับการเข้ารหัส* @param str str string ที่จะเข้ารหัส* @return encrypted string* @throws nosuchalgorithmexception ไม่มีอัลกอริทึมดังกล่าวเพื่อสร้าง message digest* @throws unsupportencodingexception*/ encoderbymd5 // กำหนดวิธีการคำนวณ messageGeSest md5 = messageGeSt.getInstance ("MD5"); base64Encoder base64en = ใหม่ base64Encoder (); // encrypted สตริงสตริง newsstr = base64en.encode (md5.digest (str.getBytes ("UTF-8"))); ส่งคืน Newsstr; - การเรียกใช้ฟังก์ชัน:
string str = "0123456789"
System.out.println (encoderbymd5 (str));
เอาต์พุต: EB5EJF1PTWAXM4BIJSPYXW ==
(iii) ตรวจสอบว่ารหัสผ่านถูกต้องหรือไม่
เนื่องจาก MD5 ขึ้นอยู่กับหลักการของ Message Digest คุณสมบัติพื้นฐานของการย่อยข้อความคือการคำนวณข้อความข้อความตามการย่อย ดังนั้นเพื่อตรวจสอบว่ารหัสผ่านถูกต้องจำเป็นต้องคำนวณรหัสผ่านอินพุตใหม่ (ข้อความข้อความ) และเปรียบเทียบกับการย่อยที่เก็บไว้ในฐานข้อมูล (นั่นคือการย่อยที่เก็บไว้ในฐานข้อมูลเป็นรหัสผ่านของผู้ใช้) หากการย่อยสองรายการเหมือนกันหมายความว่ารหัสผ่านนั้นถูกต้องและแตกต่างกันหมายความว่ารหัสผ่านนั้นไม่ถูกต้อง
/ ** ตัดสินว่ารหัสผ่านของผู้ใช้นั้นถูกต้อง* @param newpasswd รหัสผ่านที่ป้อนโดยผู้ใช้* @param รหัสผ่าน OldPasswd ที่เก็บไว้ในฐานข้อมูล - - สรุปรหัสผ่านของผู้ใช้* @return* @throws nosuchalgorithMexception* @throws unsupportencodexception nosuchalgorithmexception, unsupportencodingexception {if (encoderbymd5 (newpasswd) .equals (oldPasswd)) ส่งคืนจริง; อื่นกลับมาเป็นเท็จ -PS: เกี่ยวกับเทคโนโลยีการเข้ารหัสเว็บไซต์นี้ยังมีเครื่องมือการเข้ารหัสต่อไปนี้สำหรับการอ้างอิงของคุณ:
MD5 เครื่องมือเข้ารหัสออนไลน์: http://tools.vevb.com/password/createMd5Password
เครื่องมือการเข้ารหัส/ถอดรหัส Escape: http://tools.vevb.com/password/escapepwd
เครื่องมือเข้ารหัส sha1 ออนไลน์: http://tools.vevb.com/password/sha1encode
ลิงค์สั้น ๆ (URL สั้น ๆ ) เครื่องมือสร้างออนไลน์: http://tools.vevb.com/password/dwzcreate
ลิงค์สั้น ๆ (URL สั้น ๆ ) เครื่องมือกู้คืนออนไลน์: http://tools.vevb.com/password/unshorturl
เครื่องกำเนิดรหัสผ่านที่มีความแข็งแรงสูง: http://tools.vevb.com/password/createstrongpassword
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น