Java 二次MD5 32位小写加密算法与php页面加密结果相同
最近做的一个项目需要使用MD5加密算法,需要加密的参数有两个。自己先试了几次,算的结果为php页面的不一样,后来与写php页面的同事沟通后,了解到php页面的算法如下:
action = "secondMD5";
key = "VOD_MOVE";
md5($action.$key)
即先使用key进行一次MD5加密,$key = md5("VOD_MOVE")加密结果为:cafa20f4232c530872f9ba796d6eaa84
然后时间key加密得到的结果与action再进行一次加密,即md5("secondMD5cafa20f4232c530872f9ba796d6eaa84")
加密的结果为:b787b45af6b846e7a6850aa5891cf132
容易犯的错误是直接md5("secondMD5VOD_MOVE"),加密结果为:e3c8de32fc29ea803e9615ab348d45b3
这样的算法算出来的结果始终是错误的。一般如果算出来的结果与后台不一致,最好的办法就是即时找到后台工作人员,与其沟通,这样效率会很高。
下面说一下java的实现吧,直接上代码了,废话就不多说了
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; public class Md5 { public static void main(String[] args) {
String str = encryption("VOD_MOVE");
System.out.println("一次加密Md5(VOD_MOVE)结果:" + str);
String string = encryption("secondMD5" + str);
System.out.println("二次加密Md5(secondMD5" + str + ")结果:" + string);
} /**
*
* @param plain 明文
* @return 32位小写密文
*/
public static String encryption(String plain) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plain.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));
} re_md5 = buf.toString(); } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return re_md5;
} }
Java 二次MD5 32位小写加密算法与php页面加密结果相同的更多相关文章
- md5 32位小写加密源码
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * md5 32位小写加密 ...
- MD5 32位 小写加密和大写加密
/** * MD5加密方法 */ public static String MD5(String str) { MessageDigest md5 = null; try { md5 = Messag ...
- md5 32位 加密原理 Java实现md5加密
md5 32位 加密原理 简单概括起来,MD5 算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果. 第一步:处理原文 首先,我们计算出原文长度(bit)对 512 求余的结果,如果不等于 ...
- iOS关于md5 32位加密
导入头文件: #import <CommonCrypto/CommonDigest.h> //md5 32位 加密 (小写)- (NSString *)md5:(NSString *)st ...
- 原创:MD5 32位加密软件
网站后台数据库切勿使用明文保存密码,否则一旦黑客拿下你的Webshell,后果不堪设想. 网站后台密码加密大多数采用的就是MD5算法加密.今天给大家送一个本人用c#简单编写的MD5 32位加密程序,虽 ...
- java MD5 32位加密
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 ...
- MD5 32位、16位加密
/// <summary> /// MD5 16位加密 /// </summary> /// <param name="ConvertString"& ...
- Java class不分32位和64位
1.32位JDK编译的java class在32位系统和64位系统下都可以运行,64位系统兼容32位程序,可以理解.2.无论是Linux还是Windows平台下的JDK编译的java class在Li ...
- MD5 32位加密算法源码(测试通过)(系转载 飞扬天下)
供自己学习使用 md5.h文件 #ifndef MD5_H #define MD5_H #include <string> #include <fstream> /* Type ...
随机推荐
- android原生browser分析(一)--Application
类Browser.java是整个应用的Application.其代码例如以下: public class Browser extends Application { @Override public ...
- 14.2.5.7 Physical Row Structure 物理数据结构:
14.2.5.7 Physical Row Structure 物理数据结构: InnoDB物理记录结构依赖行格式 在表创建的时候, 默认, InnoDB 使用Antelope 文件存储格式和它的压缩 ...
- cct软件测试
<全国计算机等级考试三级教程:软件测试技术(2016年版)>根据教育部考试中心制订的<全国计算机等级考试三级软件测试技术考试大纲(2013年版)>编写而成.主要内容包括软件测试 ...
- TFS2010安装与管理
整了几天TFS,把相关的一些配置与安装的要点简单记下,希望对大家有用.本篇主要是安装与配置上的内容,下一篇会介绍如何使用以及使用方面的相关心得体会. 本篇内容简要: 1. 安装部署 1.1. 流 ...
- ntohs, ntohl, htons,htonl的比较和详解
在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...
- POJ1422 最小路径覆盖入门
题意:DAG求最小路径覆盖. 注意:二分匹配只试用于求DAG的最小路径覆盖, 有环就不行,具体可以理解证明. 对n个点进行拆点,分成左右两排点,对于边<u, v> 建 <u', v ...
- [置顶] 关于redhat系统yum源的配置1
安装过Linux软件的用户就知道,有时我们安装一个软件,需要依赖其他软件,所以必需找全所有的软件,这是一个极其麻烦的事情,有没什么方式可以让它自己去找依赖呢? 答案当然是肯定,这就需要我们配置一个神器 ...
- linux—select具体解释
linux—select具体解释 select系统调用时用来让我们的程序监视多个文件句柄的状态变化的.程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变. 关于文件句柄,事 ...
- Swift编程语言学习9—— 存储属性和计算属性
属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...
- Android本地视频播放器开发--简易播放器原型
在以前的基础上,将音视频进行合并,音频播放采用OpenSL ES,视频播放采用OpenGL ES2.0进行显示,这次的版本其中音频和视频是在同一个线程,会造成音频断断续续,后续会采用音频使用SDL,视 ...