Android获取apk签名指纹的md5值(防止重新被打包)的实现方法
程序员文章站
2024-03-03 21:13:34
本文实例讲述了android获取apk签名指纹的md5值以防止重新被打包的实现方法。分享给大家供大家参考,具体如下:
做个记录(这里只是java层的签名校验,java层容...
本文实例讲述了android获取apk签名指纹的md5值以防止重新被打包的实现方法。分享给大家供大家参考,具体如下:
做个记录(这里只是java层的签名校验,java层容易被破解,我建议apk加固下)
获取md5值来进行apk签名校验, 可以防止apk重新被打包。
下面我说说怎么获取apk签名的md5值(有三种方法)
1.用代码获取签名指纹的md5值
/** * md5加密 * @param bytestr 需要加密的内容 * @return 返回 bytestr的md5值 */ public static string encryptionmd5(byte[] bytestr) { messagedigest messagedigest = null; stringbuffer md5strbuff = new stringbuffer(); try { messagedigest = messagedigest.getinstance("md5"); messagedigest.reset(); messagedigest.update(bytestr); byte[] bytearray = messagedigest.digest(); for (int i = 0; i < bytearray.length; i++) { if (integer.tohexstring(0xff & bytearray[i]).length() == 1) { md5strbuff.append("0").append(integer.tohexstring(0xff & bytearray[i])); } else { md5strbuff.append(integer.tohexstring(0xff & bytearray[i])); } } } catch (nosuchalgorithmexception e) { e.printstacktrace(); } return md5strbuff.tostring(); }
/** * 获取app签名md5值 */ public string getsignmd5str() { try { packageinfo packageinfo = mactivity.getpackagemanager().getpackageinfo(mactivity.getpackagename(), packagemanager.get_signatures); signature[] signs = packageinfo.signatures; signature sign = signs[0]; string signstr = encryptionmd5(sign.tobytearray()); return signstr; } catch (packagemanager.namenotfoundexception e) { e.printstacktrace(); } return ""; }
2. keytool工具
使用keytool工具获取签名md5信息,下面 key是签名文件
复制代码 代码如下:
c:\program files\java\jdk1.8.0_05\bin>keytool -list -v -keystore c:\users\administrator\desktop\key
3. eclipse 里面可以查看签名信息 这里就不赘述
更多关于android相关内容感兴趣的读者可查看本站专题:《android控件用法总结》、《android视图view技巧总结》、《android文件操作技巧汇总》、《android操作sqlite数据库技巧总结》、《android操作json格式数据技巧总结》、《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android编程开发之sd卡操作方法汇总》、《android开发入门与进阶教程》及《android资源操作技巧汇总》
希望本文所述对大家android程序设计有所帮助。