当前位置:首页 > 网站入侵 > 正文内容

安卓md5校验工具apk(md5工具使用 *** )

访客3年前 (2022-01-05)网站入侵732

使用Java的MessageDigest实现MD5加密算法

MD5加密算法的实现原理MessageDigest类updateresetdigestisEqualgetInstance字符串的MD5加密算法文本的MD5加密工具类

MD5加密算法的实现原理

Java中MD5加密算法的实现:

public class MD5 { // 全局数组 private final static String[] strDigit = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};

public class MD5 { }

// 返回形式为数字和字符串 private static String byteToArrayString(byte bByte) { int iRet = bByte; if (iRet < 0) { iRet += 256; } int iD1 = iRet / 16; int iD2 = iRet % 16; return strDigits[iD1] + strDigits[iD2]; }

// 返回形式只为数字 private static String byteToNum(byte bByte) { int iRet = bByte; if (iRet < 0) { iRet += 256; } return String.valueOf(iRet); }

// 将字节数组转换成为16进制的字符串 private static String byteToString(byte[] bByte) { StringBuffer stringBuffer = new StringBuffer(); for (int i; i < bByte.length; i++) { StringBuffer.append(byteToArrayString(bByte[i])); } return stringBuffer.toString(); }

// 获取MD5值 public static String GetMD5Code(String strObj) { String resultString = null; try { resultString = new String(); MessageDigest md5 = MessageDigest.getInstance("MD5"); // md5.digest() - 返回值为存放Hash值结果的byte数组 resultString = byteToString(md5.digest(strObj.getBytes())); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return resultString; } }

MessageDigest类

MessageDigest类:为应用程序提供信息摘要算法的功能.比如MD5算法和SHA算法信息摘要是安全的单向Hash函数 : 接收任意大小的数据,并输出固定长度的Hash值

update

MessageDigest对象在开始时会被初始化对象通过调用update() *** 处理数据

/** * 使用指定的byte数组更新摘要 * * @param input 指定的byte数组 */ public void update(byte[] input);

reset

任何时候都可以调用reset() *** 重置摘要

digest

一旦所需要更新的数据都已经被更新后,应该调用digest() *** 完成Hash计算对于给定数量的更新数据 ,digest() *** 只能被调用一次.再调用digest() *** 之后,MessageDigest对象被重新设置成初始状态

/** * 通过执行诸如填充之类的最终操作完成Hash计算. * 在调用此 *** 之后,摘要被重置 * * @return byte[] Hash计算后的byte数组 */ public byte[] digest();

isEqual

/** * 比较两个摘要的相等性.做简单的字节比较 * * @param digestA 比较的摘要字节数组A * @param digestB 比较的摘要字节数组B * @return boolean 是否相等 */ public static boolean isEqual(byte[] digestA, byte[] digestB);

getInstance

返回实现指定摘要算法的MessageDigest对象

/** * 返回实现指定摘要算法的MessageDigest对象 * * @param algorithm 请求的算法的名称 * @param provider 提供者名称 * @return MessageDigest 指定摘要算法的MessageDigest对象 * @throws NoSuchAlgorithmException 当指定的请求算法名称不存在时抛出异常 */ public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException;

/** * 返回实现指定摘要算法的MessageDigest对象 * * @param algorithm 请求算法的名称 * @return MessageDigest 指定摘要算法的MessageDigest对象 * @throws NoSuchAlgorithmException 当指定的请求算法名称不存在时抛出异常 */ public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException;

Provider可以通过java.security.Security的getProviders() *** 获得已注册的提供者列表SUN提供的常用的算法:MD2MD5SHA-1SHA-256SHA-384SHA-512

字符串的MD5加密算法

使用Java自带的MessageDigest实现对文本的MD5加密算法:

/** * 将字符串转换为MD5 */ public class ParseMD5 { public static String parseStrToMd5L32(String str) { // 将字符串转换为32位小写MD5 String reStr = null; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] bytes = md5.digest(str.getBytes()); StringBuffer stringBuffer = new StringBuffer(); for (byte b : bytes) { int bt = b&0xff; if (bt < 16) { stringBuffer.append(0); } stringBuffer.append(Integer.toHexString(bt)); } reStr = stringBuffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return reStr; }

// 将字符串转换为32位大写的MD5 public static String parseStrToMd5U32(String str) { String reStr = parseStrToMd5L32(str); if (reStr != null) { reStr = reStr.toUpperCase(); } return resStr; }

// 将字符串转换为16位小写的MD5 public static String parseStrToMd5L16(String str) { String reStr = paseStrToMd5L32(str); if (reStr != null) { reStr = reStr.subString(8, 24); } return reStr; }

// 将字符串转换为16位大写的MD5 public static String parseStrToMd5U16(String str) { String reStr = parseStrToMd5L32(str); if (reStr != null) { reStr = reStr.toUpperCase().subString(8, 24); } return reStr; } }

文本的MD5加密工具类

Java中提供了自带的MessageDigest实现对文本的加密算法. 对文本进行加密的MD5加密工具类如下:

public class MD5Util { // 将文本转换为32位小写的MD5 public static String textToMd5L32(String plainText) { String result = null; // 判断需要转换的文本是否为空 if (StringUtils.isBlank(plainText)) { return null; } try { // 进行实例化和初始化 MessageDigest md5 = MessageDigest.getInstance("MD5"); // 得到一个操作系统默认的字节编码格式的字节数组 byte[] byteInput = plainText.getBytes(); // 对得到的字节数组进行处理 md5.update(byteInput); // 进行Hash计算并得到返回结果 byte[] btResult = md5.digest(); // 得到进行Hash计算后数据的长度 StringBuffer stringBuffer = new StringBuffer(); for (byte b : btResult) { int bt = b&0xff; if (bt < 16) { stringBuffer.append(0); } stringBuffer.append(Integer.toHexString(bt)); } reStr = stringBuffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return reStr; }

// 将文本转换为32位大写的MD5 public static String textToMd5U32(String plainText) { if (StringUtils.isBlank(plainText)) { return null; } String result = textToMd5L32(plainText); result = result.toUpperCase(); return result; } } www.gj *** g.com

扫描二维码推送至手机访问。

版权声明:本文由黑客技术发布,如需转载请注明出处。

本文链接:https://w-123.com/103329.html

“安卓md5校验工具apk(md5工具使用 *** )” 的相关文章

乌克兰安全局关闭了五个在公民中传播恐慌和错误信息的机器人农场

据Techspot报道,乌克兰国家安全局(SBU)宣布,自俄罗斯入侵该国以来,该机构已发现并关闭了5个运营10万个社交媒体账户的机器人农场,这些账户传播与入侵有关的假新闻。 SBU在一份新闻稿中写道,这些农场位于包括哈尔科夫、切尔卡瑟、捷尔诺皮尔和外喀尔巴阡在内的地区,被用于 “大规模信息破坏”,...

苹果、Meta 被曝向伪装成执法官员的黑客提供用户数据

据知情人士透露,苹果和Meta在2021年年中回应了伪造的“紧急数据请求”,向黑客提供了用户的基本信息,如客户的地址、电话号码和IP地址。伪造的“紧急数据请求”是由多个国家/地区的执法人员的被黑电子邮件域发送的,并且经过精心设计,带有真实或虚构执法人员的伪造签名,看起来合法。 据彭博社报道,一个名...

乌克兰安全研究人员吐槽 HackerOne 漏洞赏金平台不让提取资金

在俄乌冲突于 2 月下旬爆发后,许多西方国家都颁布了针对俄罗斯的制裁令。然而漏洞赏金平台 HackerOne 的做法,却让不少乌克兰安全研究人员也感到寒心。多位乌克兰黑客与研究人员在 Twitter 上控诉,HackerOne 正在阻止他们提取漏洞赏金,甚至有人被截留了数千美元。 由 Hacker...

NVIDIA 拒绝支付赎金后 威胁者利用代码签署恶意软件 可在 Windows 中加载

利用窃取过来的 NVIDIA 代码,威胁者利用签名证书来签署恶意软件,使其看起来值得信赖,并允许在 Windows 中加载恶意驱动程序。本周,NVIDIA 公司证实,他们遭受了一次网络攻击,使威胁者得以窃取员工的证书和专有数据。 对本次泄露事件负责的勒索集团 Lapsus$ 表示,他们已经窃取了...

DLL 反制:安全研究人员提出阻止勒索软件加密文件的新策略

尽管恶意软件开发者擅长利用各种软硬件漏洞来达成目的,但他们散播的成品也并非毫无破绽。比如近日,安全研究人员 John Page(又名 hyp3rlinx)就介绍了一招反制勒索软件的新套路。由个人网站和 Twitter 账号上发布的内容可知,John Page 专精于找到恶意软件本身的漏洞,并于近日分...

去年恶意勒索资金中有 74% 流向了俄罗斯有关黑客手中

一项新研究表明,2021 年通过勒索软件攻击方式牟取的所有资金中有 74% 流向了俄罗斯有关的黑客手中。研究人员说,价值超过 4 亿美元的加密货币支付给了“极有可能与俄罗斯有关联”的团体。研究人员还称,大量基于加密货币的洗钱活动是通过俄罗斯加密公司进行。 这项研究是由 Chainalysi...

评论列表

南殷奢欲
3年前 (2022-06-06)

f; if (bt < 16) { stringBuffer.append(0); } stringBuffer.append(Integer.toHexString(bt)); } reStr = stringBuffer.toString

元气小坏坏1
3年前 (2022-06-06)

return MessageDigest 指定摘要算法的MessageDigest对象 * @throws NoSuchAlgorithmException 当指定的请求算法名称不存

假欢常安
3年前 (2022-06-06)

nd(Integer.toHexString(bt)); } reStr = stringBuffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } ret

慵吋绾痞
3年前 (2022-06-06)

tils.isBlank(plainText)) { return null; } try { // 进行实例化和初始化 MessageDigest md5 = MessageDigest.getInstance("MD5")

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。