谁知道md5算法的用法

zhouliang888 2012-01-06 09:58:02
谁知道md5算法改如何使用,大家帮个忙了!
指点下了。
...全文
487 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlvinWu1102 2012-07-17
  • 打赏
  • 举报
回复
最近一直在研究webservice加密的问题,也可以加以借鉴,谢谢了
半个鼠标 2012-01-07
  • 打赏
  • 举报
回复
看错字了!在此想2楼道歉!
非常抱歉!
半个鼠标 2012-01-07
  • 打赏
  • 举报
回复
等于是你在本地把所有的参数拼接,

String str=a+b+c+密钥(他们给你的字符串);//这个的拼接有很多种,看他们文档怎么写,如果你是接口开发人员,那你想怎么定义就怎么定于,比如a参数与b参数之间加个,也可以;

然后用md5算一次得到一个span(签名),

String span=DigestUtil.md5Hex(str);

同时当你请求到filter的时候

他们也这样做

String a=request...
String b=request...
String c=request...

String str=a+b+c+密钥(他们根据你的id从他们数据库中查询你的密钥);
String span2=DigestUtil.md5Hex(str);

判断你的span跟他算的span2相等不,如果等则让你过去,dofilter
否则让你请求到一个错误的页面。

之所以这样做就是为了判断你的参数在中间有人做了手脚没有,或者看看是不是有些人故意去提交的。为了防止这些,于是别人用MD5,DES等算法,因为算法原理都一样,只要你放进去的东西一样,得到的结果也一样。
半个鼠标 2012-01-07
  • 打赏
  • 举报
回复
2楼好厉害,你凭什么说我虚。好笑,真的是要笑死人!
论坛上强调的是不能讽刺别人,今天不得已回报!

你懂网银接口开发不?你懂原理不?自己写过不?

哥来告诉你网银开发是怎么做到的
其实不管网银,支付宝,财付通等接口开发,说白了也不算是什么很神奇的东西,说白了还不能算是真正的接口开发;
他的原理可以这样去实现
第三方公司早就先写好接口文档,文档已经定义了你要怎么去做
他们其实是这样去想的。他给你一个页面让你去请求,把这个页面请求页面用filter拦截,他们会让你传一些必须的参数,如productID ,Id,price,span(签名)等,

其中span的值为他们文档上写的那样,比如把你本地的参数拼接

String str=productID+Id+price+密钥(他们给你的字符串);
String span=DigestUtil.md5Hex(str);//这便是在你本地进行了一次算法(加密)

你通过form的post请求,把productID ,Id,price,span一起传过去,于是在你一请求页面是就会被filter拦截,他们拦截获取你的参数,然后在他们自己的服务后台用md5的算法也进行一次算法(加密),看看得到的结果跟你的span的值同不同,如果相同则说明中间没有被别人做过手脚,说明是安全的数据,于是dofilter放行,于是让你把数据请求到他们的服务器上了。这便是接口对接


xieshengjun2009 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyxm0 的回复:]
要使用md5算法,你先记得导入一个jar包commons-codec-1.3.jar
你到网上去下载,能下载到的。
这个jar里面有个digestUtil的一个类。里面有个md5Hex()的一个方法,还有md5()方法,还有几个方法
常用的是md5Hex() ,md5()这两个
md5Hex()可以对一个string进行加密,得到一个string的字符串。这个字符串没有规律。

很多的……
[/Quote]

学习!
zhouliang888 2012-01-07
  • 打赏
  • 举报
回复
似乎有点思路了,谢谢各位了,还要摸索几天!
LFDream 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 oyxm0 的回复:]
看错字了!在此想2楼道歉!
非常抱歉!
[/Quote]

这位老兄太那个激动 、 不过讲的这些东西或许对其他人有用!!!
收租的流氓汉 2012-01-07
  • 打赏
  • 举报
回复
// MD5加码。32位
public static String MD5(String inStr) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];

for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];

byte[] md5Bytes = md5.digest(byteArray);

StringBuffer hexValue = new StringBuffer();

for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}

return hexValue.toString();
}





调这个方法!试试!
aaaa8215 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 oyxm0 的回复:]

看错字了!在此想2楼道歉!
非常抱歉!
[/Quote]这位兄弟太鸡冻了
ken_cq 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 oyxm0 的回复:]

看错字了!在此想2楼道歉!
非常抱歉!
[/Quote]
2楼对你的是夸奖,你理解成啥了,我晕。

支付对接签名这一步是必须的,看各个公司怎么设计校验而已,每个第三方支付厂商的文档写的都比较清楚。用到的时候看看就行了,而且都不用你自己一个个拼接,现成的接口调用,这方面,我目前看到的支付宝的文档和接口,还有辅助类写的都很全,基本上能满足自己的需求,傻瓜式操作了,呵呵
KG071 2012-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyxm0 的回复:]

要使用md5算法,你先记得导入一个jar包commons-codec-1.3.jar
你到网上去下载,能下载到的。
这个jar里面有个digestUtil的一个类。里面有个md5Hex()的一个方法,还有md5()方法,还有几个方法
常用的是md5Hex() ,md5()这两个
md5Hex()可以对一个string进行加密,得到一个string的字符串。这个字符串没有规律。

很多……
[/Quote]

+1
huarui888 2012-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyxm0 的回复:]
要使用md5算法,你先记得导入一个jar包commons-codec-1.3.jar
你到网上去下载,能下载到的。
这个jar里面有个digestUtil的一个类。里面有个md5Hex()的一个方法,还有md5()方法,还有几个方法
常用的是md5Hex() ,md5()这两个
md5Hex()可以对一个string进行加密,得到一个string的字符串。这个字符串没有规律。

很多的……
[/Quote]


我怎么虚了,你说我虚在哪里了?
网银对接你写过没有?
hollin1988 2012-01-06
  • 打赏
  • 举报
回复
private static void Md5(String plainText ) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();

int i;

StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if(i<0) i+= 256;
if(i<16)
buf.append("0");
buf.append(Integer.toHexString(i));
}

System.out.println("result: " + buf.toString());//32位的加密

System.out.println("result: " + buf.toString().substring(8,24));//16位的加密

} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
血饮 2012-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyxm0 的回复:]
要使用md5算法,你先记得导入一个jar包commons-codec-1.3.jar
你到网上去下载,能下载到的。
这个jar里面有个digestUtil的一个类。里面有个md5Hex()的一个方法,还有md5()方法,还有几个方法
常用的是md5Hex() ,md5()这两个
md5Hex()可以对一个string进行加密,得到一个string的字符串。这个字符串没有规律。

很多的……
[/Quote]楼上的谦虚啦。。。
半个鼠标 2012-01-06
  • 打赏
  • 举报
回复
要使用md5算法,你先记得导入一个jar包commons-codec-1.3.jar
你到网上去下载,能下载到的。
这个jar里面有个digestUtil的一个类。里面有个md5Hex()的一个方法,还有md5()方法,还有几个方法
常用的是md5Hex() ,md5()这两个
md5Hex()可以对一个string进行加密,得到一个string的字符串。这个字符串没有规律。

很多的网银对接都是这样做的,用的大部分都是这两个方法。

个人愚见!

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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