使用PHP和Python计算MD5值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tfcra/article/details/78618980

近日因为有一个需求,要在多台PC上为普通用户更改随机密码,同时不依赖于PC,单独计算出此时此刻PC的密码。

于是用python写了一个改密的软件,在PC本地以管理员运行。

在服务器上原本打算也用python写,之后显示在页面上,但是由于之前配置的都是LAMP环境,没有配python,而PHP在默认情况下也不能直接调用python脚本。

一不做二不休,干脆把算法又用PHP重写了一下。

程序的运行原理如下:


PC端关键代码:

#coding=utf-8
import os
import datetime
import time
import hashlib

#计算md5函数
def calc_md5(text):
	tmp = hashlib.md5()
	tmp.update(text.encode('utf-8'))
	return tmp.hexdigest()

#从文件获取设备id
with open('pc.id') as pcid:
	randomid = pcid.read()
	#print(randomid)

#获取当前年月日
org = datetime.date.today()

#将年月日做加法,生成一个新的整数
passwd_org = org.year + org.month + org.day

#将上一部生成的数字和pc.id和自定义的key拼接成一个字符串
passwd_org = str(passwd_org) + randomid + "zhaojianxiong"

#print(passwd_org)

#计算密码
passwd = calc_md5(passwd_org)

#对md5截取字符,生成改密密码
passwd = passwd[::4]

#print(passwd)

#执行强制改密,需要以管理员身份运行
os.system('net user operater ' + passwd)
time.sleep(5)
os.system('cls')

exit()

服务器端流程:


服务器端代码(前台html):

<form action="calc.php" method="POST">
Input Device_ID:<br>
<input type="text" name="pcid">
<br><br>
<input type="submit" value="Submit">
</form>

服务器端代码(PHP):

<?php
	date_default_timezone_set('PRC');
	echo "服务器时间: " . date("Y-m-d H:i:s") . "<br />";
	echo "密码生成时间: ";
	system("date | awk '{print$6,$2,$3,$4}'");
	echo "<br />";
	$a = intval(date("Y"));
	$b = intval(date("m"));
	$c = intval(date("d"));
	$tmp = $a + $b +$c;
	$rdmid = utf8_encode($_POST["pcid"]);
	$key = utf8_encode('zhaojianxiong');
	$tmp = utf8_encode($tmp);
	$passwd = $tmp.$rdmid.$key;
	#echo $passwd;
	$tmp = md5(utf8_encode($passwd));
	echo substr($tmp,0,1);
	echo substr($tmp,4,1);
	echo substr($tmp,8,1);
	echo substr($tmp,12,1);
	echo substr($tmp,16,1);
	echo substr($tmp,20,1);
	echo substr($tmp,24,1);
	echo substr($tmp,28,1);
	system("echo \"\n\" ");
?>


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页