Java 与 PHP 的MD5des加密结果不一样为什么不一样

本文讲的是PHP获取文件的MD5值并判断是否被修改的例子_php技巧,
由于需要判断上传的文件是否被修改过,需要记录上传文件的md5值,这里记录一下获取文件md5值的方法。
复制代码 代码如下:
if(isset($_FILES['multimedia']) && $_FILES['m
由于需要判断上传的文件是否被修改过,需要记录上传文件的md5值,这里记录一下获取文件md5值的方法。
复制代码 代码如下:
if(isset($_FILES['multimedia']) && $_FILES['multimedia']['error']==0)
$file_name = $_FILES['multimedia']['name'];
$size = getimagesize($_FILES['multimedia']['tmp_name']);
$type = $_FILES['multimedia']['type'];
$original = $_FILES['multimedia']['tmp_name'];
$md5 = md5_file($original);
echo $md5;
md5_file()
md5_file() 函数文件的 MD5 散列。md5() 函数使用 RSA 数据安全,包括 MD5 报文摘译算法。如果成功,则返回所计算的 MD5 散列,如果失败,则返回 false。
语法:md5(string,raw)
参数string,必需。规定要计算的文件。
参数charlist,可选。规定十六进制或二进制输出格式:TRUE - 原始 16 字符二进制格式;FALSE - 默认。32 字符十六进制数。
复制代码 代码如下:
$filename = "test.txt";
$md5file = md5_file($filename);
存储 "test.txt" 文件的 MD5 散列:
复制代码 代码如下:
$md5file = md5_file("test.txt");
file_put_contents("md5file.txt",$md5file);
在本例中,我们将检测 "test.txt" 是否已被更改(即是否 MD5 散列已被更改):
复制代码 代码如下:
$md5file = file_get_contents("md5file.txt");
if (md5_file("test.txt") == $md5file)
echo "The file is ok.";
echo "The file has been changed.";
复制代码 代码如下:
The file is ok.
PS:这里再为大家提供2款MD5加密工具,感兴趣的朋友可以参考一下:
MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
获取文件的MD5值
javamd5加密例子、md5碰撞例子、md5例子、判断是否md5加密、php 判断是否md5加密,以便于您获取更多的相关知识。
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...
云栖社区()为您免费提供相关信息,包括
的信息,还有javamd5加密例子、md5碰撞例子、md5例子、判断是否md5加密、php 判断是否md5加密等
,所有相关内容均不代表云栖社区的意见!如何保证MD5加密结果在不同的环境下都相同_Java_ThinkSAAS
如何保证MD5加密结果在不同的环境下都相同
如何保证MD5加密结果在不同的环境下都相同
内容来源: 网络
首先我们来看一下Java是如何实现MD5的:
import java.io.UnsupportedEncodingE
import java.security.MessageD
import java.security.NoSuchAlgorithmE
public class MD5Digest {
private static MessageDigest md5=
public static String getDigest(String msg) throws UnsupportedEncodingException, NoSuchAlgorithmException {
if(null == md5) {
md5=MessageDigest.getInstance("MD5");
byte[] byteArray=
byteArray=msg.getBytes();
byte[] md5Bytes=md5.digest(byteArray);
StringBuffer hexValue=new StringBuffer();
for(int i=0; i & md5Bytes. i++) {
int val=((int)md5Bytes[i]) & 0
if(val & 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
return hexValue.toString();
public static void main(String []args) throws UnsupportedEncodingException, NoSuchAlgorithmException{
System.out.println(getDigest("test测试"));
通过上面的代码我们会发现一个问题:
byteArray=msg.getBytes();
在不同的环境下获得的结果可能是不一样的,这样也造成很多MD5结果不一样。
所以要保证在不同环境下MD5结果相同那么必须使用相同的字符编码,比如:byteArray=msg.getBytes("ISO-8859-1");
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信nodejs md5 与 php md5 中英文加密结果不一样,怎么办? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
nodejs md5
md5.update(‘DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001afb0a565be23’, ‘utf8’);
结果:82d5e459bbdcadcf11cc4057
md5(“DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001afb0a565be23”);
结果:d5debf6abdc2
单独加密结果是正确的,但混合中英文,两者结果就不一样了。
print md5('DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001afb0a565be23');
82d5e459bbdcadcf11cc4057
怪了,在我php 5.6.0 上生成的就是:d5debf6abdc2
检查文件编码是不是 UTF-8
82d5e459bbdcadcf11cc4057
我在这里跑的:
php 文件编码为:GB2312
print_r(md5(‘’));
0ce165b19e51f6a8ede0bd17508eba46
Nodejs 文件编码为:GB2312
crypto.createHash(‘md5’).update(‘’).digest(‘hex’);
cd9e8c6fac492a11c3a7
node的中文md5时update()的参数用new Buffer(’’).toString(“binary”)试下
crypto.createHash(‘md5’).update(‘DOMAIN_CHECKagent19272中国双方的首送达方式发斯蒂芬.cnb18d0a001afb0a565be2’,‘utf8’).digest(‘hex’);
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的--一步,二步,三步,N步,二行脚印
张映 发表于
分类目录:
最近在整理代码发现了一个不错的东西,结合md5的加解密算法。网上关于php结合md5的加密,解密算法比较少的,其实php手册里面就有,改一改就行了。在此贴一下,用这算法要加载一个php模块mcrypt,不然用不了。
function string2secret($str)
$key = "123";
$td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
$key = substr(md5($key), 0, $ks);
mcrypt_generic_init($td, $key, $iv);
$secret = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
function secret2string($sec)
$key = "123";
$td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
$key = substr(md5($key), 0, $ks);
mcrypt_generic_init($td, $key, $iv);
$string = mdecrypt_generic($td, $sec);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim($string);
echo secret2string(string2secret("11111"));
//显示结果是11111
echo string2secret("11111");
//显示乱码
php经常用的加解密函数,base64_encode,base64_decode。
base64_decode
转载请注明作者:海底苍鹰地址:

我要回帖

更多关于 aes加密每次都不一样 的文章

 

随机推荐