รหัสหนึ่ง:
/** * ใช้การเข้ารหัส MD5* */public class MD5 { /** * รับสตริงที่เข้ารหัส* @param input * @return */ public static String stringMD5(String pw) { ลอง { // รับตัวแปลง MD5 (ถ้า คุณต้องการให้พารามิเตอร์ SHA1 เปลี่ยนเป็น "SHA1") MessageDigest messageDigest =MessageDigest.getInstance("MD5"); // แปลงสตริงอินพุตเป็นไบต์อาร์เรย์ ไบต์[] inputByteArray = pw.getBytes(); // inputByteArray คืออาร์เรย์ไบต์ที่ได้รับจากการแปลงสตริงอินพุต messageDigest.update(inputByteArray); // แปลงและส่งคืนผลลัพธ์ซึ่งเป็นอาร์เรย์ไบต์ที่มี 16 องค์ประกอบไบต์ [] resultByteArray = messageDigest .digest (); // แปลงอาร์เรย์อักขระเป็นสตริงและส่งกลับ byteArrayToHex(resultByteArray); } catch (NoSuchAlgorithmException e) { return null; } } public static String byteArrayToHex(byte[] byteArray) { // เริ่มต้นอาร์เรย์อักขระเพื่อเก็บอักขระเลขฐานสิบหกแต่ละตัว char[] hexDigits = {'0','1', '2',' 3','4','5','6','7','8','9', 'A', 'B', 'C', 'D', 'E', 'F' }; // สร้างอาร์เรย์อักขระใหม่ ซึ่งใช้เพื่อสร้างสตริงผลลัพธ์ (คำอธิบาย: ไบต์คือแปดบิตไบนารี นั่นคืออักขระเลขฐานสิบหก 2 ตัว (2 ยกกำลัง 8 เท่ากับ 16 ยกกำลัง 2)) char[] resultCharArray =new char[byteArray.length * 2]; สำรวจอาร์เรย์ไบต์ แปลงเป็นอักขระผ่านการดำเนินการบิต (การดำเนินการบิตมีประสิทธิภาพสูง) และใส่ลงในอาร์เรย์อักขระ int index = 0; for (byte b : byteArray) { resultCharArray[index++] = hexDigits[b>>> > 4 & 0xf]; resultCharArray[index++] = hexDigits[b& 0xf]; } // รวมอาร์เรย์อักขระเข้ากับสตริงแล้วส่งคืนสตริงใหม่ (resultCharArray); -
วิธีที่สอง:
แพ็คเกจอื่น ๆ นำเข้า java.security.MessageDigest; นำเข้า java.security.NoSuchAlgorithmException; / * * อัลกอริทึม MD5 * / คลาสสาธารณะ MD5 { // สตริงคงที่สุดท้ายส่วนตัวอาร์เรย์ทั่วโลก [] strDigits = { "0", "1", " 2", "3", "4", "5", "6", "7", "8", "9", "ก", "ข", "ค" "d", "e", "f" }; public MD5() { } // แบบฟอร์มการส่งคืนคือตัวเลขและสตริงส่วนตัว byteToArrayString(byte bByte) { int iRet = bByte; println( "iRet="+iRet); ถ้า (iRet < 0) { iRet += 256; } int iD1 = iRet / 16; iD2 = iRet % 16; return strDigits[iD1] + strDigits[iD2]; } // แบบฟอร์มส่งคืนเป็นเพียงตัวเลขคงที่ byteToNum(byte bByte) { int iRet = bByte; + iRet); ถ้า (iRet < 0) { iRet += 256; } String.valueOf(iRet); } // แปลงอาร์เรย์ไบต์เป็นสตริงสตริงส่วนตัวแบบเลขฐานสิบหก byteToString (ไบต์ [] bByte) { StringBuffer sBuffer = new StringBuffer (); for (int i = 0; i < bByte.length; i++) { sBuffer.append(byteToArrayString(bByte[i])); } ส่งคืน sBuffer.toString(); สตริงคงที่สาธารณะ GetMD5Code (String strObj) { String resultString = null; try { resultString = new String (strObj); MessageDigest md = MessageDigest.getInstance ("MD5"); // md.digest () ค่าที่ส่งคืนของฟังก์ชันนี้คือ ที่เก็บข้อมูล อาร์เรย์ไบต์ของค่าแฮช resultString = byteToString(md.digest(strObj.getBytes())); } catch (NoSuchAlgorithmException เช่น) { ex.printStackTrace(); } return resultString; } สาธารณะคงเป็นโมฆะ main(String[] args) { MD5 getMD5 = new MD5(); ; }}