一小段代码出错了,大家帮忙看看

danny66 2004-11-29 05:47:06
import java.security.*;
import javax.crypto.*;
public class MD5 {
public void main(String[] args) {
try{
MessageDigest md=MessageDigest.getInstance("md5");
byte[] buf={1,2,3,4,5} ;
md.update(buf);
byte[] digestBuf= md.digest();
}
catch (Exception e){ System.out.println(e);}
for(int i=0; i<digestBuf.length;i++){
System.out.println(digestBuf[i]+" ");
}
}}
编译时显示 "can't resolve digestBuf"
难道是digestBuf 出问题了吗?
...全文
76 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
apple21 2004-11-29
  • 打赏
  • 举报
回复
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();
}
}
}
wuyuestar 2004-11-29
  • 打赏
  • 举报
回复
so,byte[] digestBuf= md.digest();放到try前面.....
onne 2004-11-29
  • 打赏
  • 举报
回复
很简单,digestBuf 定义成了局部变量,后面当然认不出来,把它定义到最前面。
另外这句 public void main 是什么意思
funcreal 2004-11-29
  • 打赏
  • 举报
回复
使用这个:

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();
}
}
woodcord 2004-11-29
  • 打赏
  • 举报
回复
byte[] digestBuf= md.digest();这一句里的md.digest()的类型是什么啊?
该为byte[] digestBuf= (byte)md.digest();试试

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧