JDeveloper Asked: 2020-06-24 17:34:13 +0800 CST 2020-06-24 17:34:13 +0800 CST 2020-06-24 17:34:13 +0800 CST 我如何在 android 中加密 MD5 中的 IMEI? 772 我需要en encriptar,有人知道怎么做吗?我设法得到了但是。IMEIMD5IMEIencriptación java 3 Answers Voted Best Answer gugadev 2020-06-24T17:54:32+08:002020-06-24T17:54:32+08:00 你不加密MD5,你做的是散列MD5。你可以这样做MessageDigest: MessageDigest md = MessageDigest.getInstance("MD5"); md.update(imei.getBytes("UTF-8")); byte[] digest = md.digest(); BigInteger bi = new BigInteger(1, digest); // para tratar con el padding String md5 = String.format("%0" + (digest.length << 1) + "x", bi); 我认为如果你试图获得一个不存在的散列算法,它MessageDigest#getInstance会抛出一个NoSuchAlgorithmException,所以你必须做一个 try catch。 Jorgesys 2020-06-24T17:55:13+08:002020-06-24T17:55:13+08:00 为了获取IMEI的MD5,我分享了一个使用 MessageDigest类的方法: Android中从字符串生成MD5代码的方法: private String getMD5(final String s) { try{ MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); digest.update(s.getBytes()); byte messageDigest[] = digest.digest(); StringBuilder hexString = new StringBuilder(); for(int i = 0; i < messageDigest.length; i++){ String h = Integer.toHexString(0xFF & messageDigest[i]); while(h.length() < 2){ h = "0" + h; } hexString.append(h); } return hexString.toString(); }catch (NoSuchAlgorithmException e){ Log.e("MD5", "md5() NoSuchAlgorithmException: " + e.getMessage()); } return ""; } 您可以这样调用它来获取 IMEI 的 MD5(哈希而不是字符串加密): String myIMEI_MD5 = getMD5(myIMEI); 要获取设备的 IMEI,可以使用TelephonyManager类: String myIMEI = ""; TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (mTelephony.getDeviceId() != null){ myIMEI = mTelephony.getDeviceId(); } 推荐的另一种方法是使用Settings.Secure.ANDROID_ID,它将 ID 作为唯一的 64 位十六进制字符串。 String myIMEI = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 记得在你的添加权限AndroidManifest.xml: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> Codelaby 2020-07-10T01:17:21+08:002020-07-10T01:17:21+08:00 md5从字符串中获取的另一种方法。 根据 Android Studio 2.1 的建议调整代码 public static String getMD5(String s) { try { // Create MD5 Hash MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); digest.update(s.getBytes()); byte messageDigest[] = digest.digest(); // Create Hex String StringBuilder hexString = new StringBuilder(); for (byte aMessageDigest : messageDigest) hexString.append(Integer.toHexString(0xFF & aMessageDigest)); return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } 它的用途 getMD5("número imei");
你不加密
MD5
,你做的是散列MD5
。你可以这样做MessageDigest
:我认为如果你试图获得一个不存在的散列算法,它
MessageDigest#getInstance
会抛出一个NoSuchAlgorithmException
,所以你必须做一个 try catch。为了获取IMEI的MD5,我分享了一个使用 MessageDigest类的方法:
Android中从字符串生成MD5代码的方法:
您可以这样调用它来获取 IMEI 的 MD5(哈希而不是字符串加密):
要获取设备的 IMEI,可以使用TelephonyManager类:
推荐的另一种方法是使用Settings.Secure.ANDROID_ID,它将 ID 作为唯一的 64 位十六进制字符串。
记得在你的添加权限
AndroidManifest.xml
:md5
从字符串中获取的另一种方法。根据 Android Studio 2.1 的建议调整代码
它的用途