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

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 出问题了吗?
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用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();试试
不需要开发,0行代码写接口服务,sql编程,只要会sql就会写接口服务,让后端变得更简单,简单4步短短5分钟,立马上手,java小白也可以写接口。订阅课程后可以免费获取发布版进行使用和测试。 0行代码写服务的需要来源案例一,当时有个项目,有400张表,都是管理系统,单表维护的内容较多,当时的项目团队是13人,前后端都写,那时候还没有springboot,用的是ssm,mybatis刚出来,有了替代hibernate的趋势,ifelse写了一堆又一堆,实体类也是,当时的后端分了7层☒,天天加班干这活,复制粘贴,很容易犯错,实体类多人引用修改,真的是废了很大的劲……案例二,也是一个比较大的项目,两千万多万那种,当时为了拿项目,需要快速实现原型给客户看,要求比较高,虽说是原型但是数据全部需要实时,这时候就需要大量编写数据接口,同样编写接口这件事难度倒是不大,但是量大,编写过程手写很容易出错……案例三,以前管理的团队主要做移动端开发,里面的项目会涉及到推送,管理系统,数据采集与同步,总之很多内容,需要前后端通吃,我不仅需要出方案,设计原型,设计数据库,出报价,沟通需求,还要写后端框架,数据接口与数据采集,开发前端(web端),移动端,管理所有项目,但是那时候招的人只会写移动端,实在是忙不过来,我就想能不能有个框架让不会写java的人能写接口,因为写移动端sqlite总是会用的,也就是说写sql不是难点……基于以上三点需求的积累,我利用业余时间写了一个后端框架,完成了这样的需求,刚开始是需要写三行代码完成一个接口,经过后面优化,现在不写代码也可以实现……  本框架涉及的知识点比较多,目前提供最基础版供大家学习和使用,后期逐步推出框架具体的教程和功能内容,下期我们讲如何在实际项目中通过部署版如何完成所需要的接口编写,欢迎大家订阅。

62,614

社区成员

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

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