ในการเขียนโปรแกรมของเราเรามักจะต้องเข้ารหัสเนื้อหาพิเศษบางอย่าง วันนี้ฉันได้สรุปวิธีการเข้ารหัสง่ายๆสองสามวิธีและแบ่งปันกับคุณ!
จะใช้การเข้ารหัสและถอดรหัสสตริงด้วย Java ได้อย่างไร? เพื่อให้แน่ใจว่าความปลอดภัยของข้อมูลผู้ใช้เมื่อระบบบันทึกข้อมูลผู้ใช้จำเป็นต้องเข้ารหัสและบันทึกรหัสผ่านลงในฐานข้อมูล
เมื่อคุณต้องการใช้รหัสผ่านให้นำข้อมูลออกมาและถอดรหัส
หลีกเลี่ยงการบันทึกรหัสผ่านธรรมดา
แผน 1:
แพ็คเกจ com.tnt.util; นำเข้า Java.security.MessageDigest; คลาสสาธารณะ StringUtil {สตริงคงสุดท้ายส่วนตัว [] hexdigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; / *** แปลงอาร์เรย์ไบต์เป็น hex string** @param b* byte array* @return hex string*/ สตริงคงที่สาธารณะ bytearraytohexstring (byte [] b) {stringbuffer resultsb = new StringBuffer (); สำหรับ (int i = 0; i <b.length; i ++) {resultsb.append (bytetohexstring (b [i])); } return resultsb.toString (); } สตริงคงที่ส่วนตัว bytetohexstring (byte b) {int n = b; ถ้า (n <0) n = 256 + n; int d1 = n / 16; int d2 = n % 16; กลับ hexdigits [d1] + hexdigits [D2]; } สตริงคงที่สาธารณะ MD5ENCODE (ต้นกำเนิดสตริง) {สตริงผลลัพธ์ string = null; ลอง {resultString = สตริงใหม่ (ต้นกำเนิด); MESAGEDIGEST MD = MESEGATEGEST.GETINSTANCE ("MD5"); ResultString = ByteArraytoHhexString (Md.Digest (ResultString .getBytes ())); } catch (Exception Ex) {} Return ResultsTring; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.err.println (md5encode ("123456")); -แผน 2
แพ็คเกจ com.shangyu.core.utils; คลาสสาธารณะ md5 {สตริงคงที่สาธารณะ getMd5 (byte [] แหล่งที่มา) {String s = null; char hexdigits [] = {// ตัวละครที่ใช้ในการแปลงไบต์เป็น hexadecimal '0', ',' 8 ' 'a', 'b', 'c', 'd', 'e', 'f'}; ลอง {java.security.messagedigest md = java.security.messagedigest.getinstance ("md5"); md.update (แหล่งที่มา); // ผลการคำนวณของ MD5 เป็นจำนวนเต็มยาว 128 บิต // มันถูกแสดงโดยไบต์ซึ่งเป็น 16 ไบต์ ถ่าน str [] = ถ่านใหม่ [16 * 2]; // ถ้าแต่ละไบต์แสดงเป็นเลขฐานสิบหกมีการใช้ตัวละครสองตัว // ดังนั้นจึงต้องใช้เวลา 32 อักขระในการแสดง hexadecimal int k = 0; // มันแสดงถึงตำแหน่งอักขระที่สอดคล้องกันในผลการแปลงสำหรับ (int i = 0; i <16; i ++) {// เริ่มต้นจากไบต์แรกการแปลงของแต่ละไบต์ของ md5 // เป็น hexadecimal อักขระ byte0 = tmp [i]; // ใช้ i-th byte str [k ++] = hexdigits [byte0 >>> 4 & 0xf]; // ใช้การแปลงตัวเลขของบิต 4 ส่วนบนในไบต์, // >>> // สำหรับการเปลี่ยนแปลงแบบลอจิคัลขวาให้เลื่อนบิตสัญลักษณ์เข้าด้วยกัน str [k ++] = hexdigits [byte0 & 0xf]; // ใช้การแปลงตัวเลขของ 4 บิตที่ต่ำกว่าในไบต์} s = สตริงใหม่ (str); // แปลงผลลัพธ์หลังจากการแปลงเป็นสตริง} catch (Exception e) {E.printStackTrace ();} return s;} สตริงคงที่สาธารณะ getMd5 (string str) {return getMd5 (str.getBytes ());ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!