/*
* @(#)DigestUtil.java Project:com.sinaapp.msdxblog.androidkit
* Date:2012-12-18
*
* Copyright (c) 2011 CFuture09, Institute of Software,
* Guangdong Ocean University, Zhanjiang, GuangDong, China.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.lurencun.cfuture09.commons.security;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @author Geek_Soledad (66704238@51uc.com)
*/
public class DigestUtil {
/**
* 获取一个字符串加密后的16进制值
*
* @param algorithm
* 摘要算法
* @param message
* 进行加密的String对象
*
* @return String 计算后的结果
*/
public static String doDigest(String algorithm, String message) {
return doDigest(algorithm, message.getBytes());
}
/**
* 获取一个字符串加密后的16进制值
*
* @param algorithm
* 摘要算法
* @param message
* 进行加密的byte数组
*
* @return String 计算后的结果
*/
public static String doDigest(String algorithm, byte[] message) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance(algorithm);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] result = md.digest(message);
return StringUtil.bytesToHexString(result);
}
/**
* 获取一个字符串加密后的16进制值
*
* @param algorithm
* 摘要算法名称
* @param message
* 进行加密的byte数组
*
* @return String 计算后的结果
*/
public static String doDigest(String algorithm, char[] message) {
return doDigest(algorithm, new String(message));
}
}
/*
* @(#)StringUtil.java Project:com.sinaapp.msdxblog.androidkit
* Date:2012-12-18
*
* Copyright (c) 2011 CFuture09, Institute of Software,
* Guangdong Ocean University, Zhanjiang, GuangDong, China.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.lurencun.cfuture09.commons.security;
/**
* @author Geek_Soledad (66704238@51uc.com)
*/
public class StringUtil {
/**
* byte[]数组转换为16进制的字符串。
*
* @param data
* 要转换的字节数组。
* @return 转换后的结果。
*/
public static final String bytesToHexString(byte[] data) {
StringBuilder valueHex = new StringBuilder();
for (int i = 0, tmp; i < data.length; i++) {
tmp = data[i] & 0xff;
if (tmp < 16) {
valueHex.append(0);
}
valueHex.append(Integer.toHexString(tmp));
}
return valueHex.toString();
}
/**
* 16进制表示的字符串转换为字节数组。
*
* @param hexString
* 16进制表示的字符串
* @return byte[] 字节数组
*/
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
char[] hexChars = hexString.toCharArray();
int length = hexString.length();
byte[] d = new byte[length >>> 1];
for (int n = 0; n < length; n += 2) {
String item = new String(hexChars, n, 2);
// 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节
d[n >>> 1] = (byte) Integer.parseInt(item, 16);
}
return d;
}
}
分享到:
相关推荐
在C或C++中实现MD5加密技术,通常会涉及以下几个关键步骤: 1. **数据预处理**:MD5算法首先对输入数据进行预处理,包括填充至56个字节的倍数,添加长度信息,并进行位反转。 2. **初始化MD5状态**:设置四个32位...
下面我们将详细讨论C++实现MD5加密封装类的相关知识点。 1. **MD5基本原理**: - MD5算法由Ronald L. Rivest在1991年设计,它将任意长度的输入(又叫做预映射)通过一系列的数学运算,转换成固定长度的输出,这个...
这个标题"Md5加密封装代码"表明我们将讨论一个已经封装好的C++类,该类提供了对MD5哈希计算的接口,使得在程序中调用MD5算法变得更加简单。 在描述中提到,附件包含了一个`.h`头文件和一个`.cpp`源文件,这通常意味...
python超级方便的md5加密,以封装。md5的值是不能反解的,那怎么判断现在的输入和数据库中加密的内容一致呢,只能将现在的输入加密,拿加密后的md5值和数据库中的md5值做判断,md5或许可以被黑客暴力破解
MD5加密封装 简单实用! 希望可以帮助各位大侠!!
MD5加密jar包是将MD5算法封装到Java程序中的库,方便开发者在Java应用中快速实现MD5加密功能。 MD5的特点: 1. **不可逆性**:MD5算法是单向的,即给定一个输入,可以得到一个固定长度的摘要,但不能通过摘要反推出...
对于更复杂的应用场景,可能需要创建自定义的PL/SQL包来封装MD5加密逻辑。这不仅允许更加灵活地控制加密过程,还可以将加密功能集成到数据库的业务逻辑中,提高系统的整体安全性。以下是一个创建自定义MD5加密包的...
这些库通常提供了封装好的函数,如`MD5String`或`CalculateMD5`,可以直接接受字符串作为输入,返回MD5哈希值。例如,`dcutils`库的`THashMD5`类提供了`GetHashOf`方法,可以对字符串进行MD5哈希计算。 3. **使用...
然而,由于其存在碰撞漏洞(即不同的输入可能会产生相同的输出),MD5现在更多地被用于验证文件完整性,而非敏感数据的加密。 在Java中实现MD5加密通常涉及以下步骤: 1. 引入库:Java标准库提供`java.security....
该类模块实例将MD5加密算法封装在一个VB6.0类模块中,使得开发者能够方便地使用MD5加密算法来实现文本字符串的加密和文件的加密。 类模块代码解析 该类模块代码主要包括以下几个部分: 1. 常量定义:该类模块定义...
自封装的jar包可能是作者为了方便其他人使用而打包的,包含了MD5加密的所有功能,用户可以直接导入到自己的项目中,无需关心内部实现细节。 6. **使用MD5加密的步骤**: - 初始化`MessageDigest`对象,指定算法为...
在Java中,MD5加密可以通过特定的库或API来实现,这些库或API通常封装了MD5的计算过程,使得开发者能够方便地对字符串或其他数据进行加密。 "Md5加密jar包"可能包含了两种不同的MD5加密实现,这可能是因为每个jar包...
在"易语言偷懒实现md5加密"的源码中,可能已经封装了上述过程,简化了开发者的工作。使用时,只需调用相应的函数,传入需要加密的字符串,即可得到对应的MD5值。这种实现方式通常会隐藏底层的复杂性,让开发者更专注...
MD5.DLL是MD5加密算法的一个动态链接库,它封装了MD5的计算逻辑,供应用程序调用。在PowerBuilder中,我们可以通过引入外部DLL的方式来利用这些功能。以下是一个详细的步骤和知识点: 1. **引入MD5.DLL**:在Power...
vb中,md5加密程序封装德国大使馆是大方过是德国
例如,这里有一个简单的MD5加密的JS封装代码示例,来自于`md5.js`文件: ```javascript function md5(str) { // 引入MD5算法 const CryptoJS = require('crypto-js'); // 使用MD5算法对字符串进行加密 const ...
在实际的Android项目中,可以创建一个工具类,封装上述MD5加密方法,方便在各个地方调用。在`MD5`这个压缩包文件中,可能就包含了一个这样的工具类示例,包含了加密和验证MD5的方法。 总的来说,Android应用中的MD5...
为了使代码更易读,可以将MD5加密封装到一个单独的方法中,例如: ```csharp public string GetMD5Hash(string input) { MD5 md5 = MD5.Create(); byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] ...
在标题提到的"可用的jsp的MD5加密的javaBean",我们可以理解为这是一个专门用于在JSP(JavaServer Pages)环境中处理MD5加密的Java类。开发者可能在寻找如何在JSP中对用户输入的数据进行MD5加密,例如密码,以提高...