一小段代码出错了,大家帮忙看看 byte[] digestBuf= md.digest();这一句里的md.digest()的类型是什么啊?该为byte[] digestBuf= (byte)md.digest();试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用这个:package funcreal.string;import java.security.*;/** * <p>Title: MD5加密算法</p> * <p>Description: 使用MD5算法生成字符串的密文,密文不可逆</p> * <p>Copyright: Func Real Copyright (c) 2004</p> * <p>Company: 河北省标准化研究院</p> * @author not attributable * @version 1.0 */public class MD5 { public static void main(String[] args) { System.out.println(getMD5ofStr("hello")); } /** * 把给定字符串进行加密 * @param str String 需要加密的字符串 * @return String 加密后的字符串 */ public static String getMD5ofStr(String str) { String MD5ofStr = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes()); MD5ofStr = byte2hex(md.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return MD5ofStr; } /** * 将字节串转化为字符串,每一个字节转化为两个16进制数,所以,长度为6的字节串将生成长度为12的字符串 * @param b byte[] 字节串 * @return String 转化后的字符串 */ private static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) { hs = hs + "0" + stmp; } else { hs = hs + stmp; } } return hs.toUpperCase(); }} 很简单,digestBuf 定义成了局部变量,后面当然认不出来,把它定义到最前面。另外这句 public void main 是什么意思 so,byte[] digestBuf= md.digest();放到try前面..... import java.security.*;public class Mymd5{ public static void main(String[] args) { String str="123456"; try{ MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bin1 = str.getBytes(); md.update(bin1); byte[] bin2 = md.digest(); final StringBuffer buffer = new StringBuffer(); for (int i = 0; i < bin2.length; ++i) //2进制转换成16进制 { final byte b = bin2[i]; final int value = (b & 0x7F) + (b < 0 ? 128 : 0); buffer.append(value < 16 ? "0" : ""); buffer.append(Integer.toHexString(value)); } String g=buffer.toString(); System.out.println(g); }catch(Exception e) { e.printStackTrace(); } }} JAVA初学者,请问以下程序中特定字符串何时被输出 怎么用poi操作excel啊? 有关Applet的问题~~ 求助:jdbc中的问题 关于win32com.dll 的版本问题 求《java2图形设计卷二:swing》 java调用存储过程 如何使用反反编译程序jade 快帮帮忙吧,急!!!!!关于抓屏问题 请问哪个版人气最旺,我想问一个关于VSS的问题。 jni调用c程序必须都是.c的文件吗,不能是.cpp的吗? 关于字符串长度的问题?
* <p>Title: MD5加密算法</p>
* <p>Description: 使用MD5算法生成字符串的密文,密文不可逆</p>
* <p>Copyright: Func Real Copyright (c) 2004</p>
* <p>Company: 河北省标准化研究院</p>
* @author not attributable
* @version 1.0
*/public class MD5 {
public static void main(String[] args) { System.out.println(getMD5ofStr("hello"));
} /**
* 把给定字符串进行加密
* @param str String 需要加密的字符串
* @return String 加密后的字符串
*/
public static String getMD5ofStr(String str) {
String MD5ofStr = null; try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes()); MD5ofStr = byte2hex(md.digest()); } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} return MD5ofStr; } /**
* 将字节串转化为字符串,每一个字节转化为两个16进制数,所以,长度为6的字节串将生成长度为12的字符串
* @param b byte[] 字节串
* @return String 转化后的字符串
*/
private static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
} }
return hs.toUpperCase();
}
}
另外这句 public void main 是什么意思
{
public static void main(String[] args)
{
String str="123456"; try{
MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bin1 = str.getBytes(); md.update(bin1); byte[] bin2 = md.digest(); final StringBuffer buffer = new StringBuffer(); for (int i = 0; i < bin2.length; ++i) //2进制转换成16进制
{
final byte b = bin2[i];
final int value = (b & 0x7F) + (b < 0 ? 128 : 0);
buffer.append(value < 16 ? "0" : "");
buffer.append(Integer.toHexString(value));
}
String g=buffer.toString();
System.out.println(g);
}catch(Exception e)
{
e.printStackTrace();
}
}
}