php python sha256 加密接口 对接

zhenghailong888 2016-12-19 09:11:54
现有成功python接口代码样例,要求改成php.经过多天努力,还是不能成功,代码如下:
python:


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Language Version: 2.7+
# Last Modified: 2016-08-08 15:22:37

__all__ = []
__author__ = "aaa(email:aaa@126.com tel:aaa)"
__version__ = "0.0.1"

import json
import uuid
import random
import requests
import base64
import hashlib
import datetime



def attach_header(msg):
'''附加校验信息到msg消息中'''
msg.pop('sign', None)
app_key = msg['appkey']
# app_id = find_appid(app_key)
app_id = 'L9HASRNCM0IQ' # XXX FOR TEST
nonce_len = 16
try:
with open('/dev/urandom', 'rb') as fd:
nonce = fd.read(nonce_len)
except:
# 没找到硬件随机数发生器, 使用系统自带的随机数函数
try:
nonce = os.urandom(nonce_len)
except:
# 没找到系统随机数发生器, 使用伪随机数函数
nonce = bytes(random.randint(0, 255) for i in range(nonce_len))
# nonce = nonce.hex()
nonce = base64.b85encode(nonce).decode('utf8')
created = datetime.datetime.now(datetime.timezone.utc)
created = created.isoformat()
result = {
'nonce': nonce,
'ts': created,
}
msg.update(result)
data = sorted(msg.items(), key=lambda x:x[0])
data = ["{}={}".format(*i) for i in data]
data = ','.join(data)
# print('data:', data)
data = hashlib.sha256(data.encode('utf8'))
data.update(app_id.encode('utf8'))
sign = base64.b64encode(data.digest()).decode('utf8')
msg.update({'sign': sign})
return msg



def csms(phoneNun,txt):
msg = {'ms': phoneNun,
'tid':'10073000',
'appkey': 'hwh0',
'ct': txt
}

msg = attach_header(msg)
print('req:', msg)
r = requests.post('http://*:*/csms', json=msg)
print(r.json())
print(r.reason)
print('------------------------------------------')


if __name__=='__main__':

csms('13888888888','短信进程挂断且重启失败')




PHP:

<?php
function attach_header($msg) {

$app_key = $msg['appkey'];
$app_id = 'L9HASRNCM0IQ'; # XXX FOR TEST
$nonce_len = 16;
$nonce = create_nonce(16);
$created = create_created();
$msg['nonce'] =$nonce;
echo "--------------".$nonce."----------------";
$msg['tid'] = "10073000";
$msg['ts'] = $created;
$aaa = "";
foreach ($msg as $key => $value) {
$aaa.= $key . "=" . $value . ",";
// echo $key."=".$value."</br>";

}
$data = substr($aaa, 0, -1);
//$aaa = "appkey=hwh0,ct=短信进程挂断且重启失败,ms=18600699809,nonce=zzzP~sjPT@gRkz4?4b^l,tid=10073000,ts=2016-12-19T09:43:46.104064+00:00";
//echo $aaa."</br>";
//$aaa = utf8_encode($aaa);
//echo "aaaaa=".$aaa;
//$aaa = utf8_encode($aaa);

echo "ccccccccccccccccccccccccccccc</br>";
// $data = utf8_encode($data);
// echo $data;
//echo bin2hex($aaa);
echo "</br>ccccccccccccccccccccccccccccc";
$sign = utf8_decode(base64_encode(hash_hmac('sha256', utf8_encode($data), utf8_encode($app_id), true)));

// echo "--------------".$msgs."----------------";
// $msgs = base64_decode($msgs);
// echo "1111111111111".$msgs."1111111111111111111";
// $sign = $msgs ;
// $sign = "EEojJMrextWbkvmj/0b+LsqyKldE1o30zoFLpLnAb0A=";
// echo base64_encode($msgs);


// $bbb=$aaa.",sign=".$sign;
$msg['sign'] = $sign;
// data = hashlib.sha256(data.encode('utf8'))
// data.update(app_id.encode('utf8'))
// sign = base64.b64encode(data.digest()).decode('utf8')
// msg.update({'sign': sign})
foreach ($msg as $key => $value) {
$aaa.= $key . "=" . $value . ",";
// echo $key."=".$value."</br>";

}
return $msg;
}
function create_nonce($pw_length = 8) {
$randnonce = '';
for ($i = 0;$i < $pw_length;$i++) {
$randnonce.= chr(mt_rand(33, 126));
}
//return $randnonce;
//return base64_encode("zzzP~sjPT@gRkz4?4b^l");
return "zzzP~sjPT@gRkz4?4b^l";
}
function create_created($pw_length = 8) {
$mytime = time();
date_default_timezone_set("UTC");
$created = date('c');
//return $created;
return "2016-12-19T09:43:46.104064+00:00";
}
// $pw_length = 6
//echo create_password(6);
function csms($phoneNun, $txt) {
$msg = array("appkey" => "hwh0", "ct" => '短信进程挂断且重启失败', "ms" => '18600699809',
// "tid"=>"10073000",
);

$msg = attach_header($msg);

// foreach ($msg as $key => $value) {
// echo $key."=".$value."</br>";

// }


return $msg;
// echo $msg;

};
function post($url, $post_data = '', $timeout = 5) { //curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
if ($post_data != '') {
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, false);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
return $file_contents;

}
//echo "11111111111111111111111</br>";
$csmsa = csms('13888888888', '短信进程挂断且重启失败');
//echo gettype($csmsa);
// foreach ($csmsa as $key => $value) {
// echo $key."=".$value."</br>";
//
// }

foreach($csmsa as $key=>$value)
//echo $key."=>".$value;
json_encode($csmsa);

$ccc=post("http://*:*/csms",json_encode($csmsa));
//echo "____________________________</br>";
//echo $ccc;
//echo $csms;
// hoVbePfdCDc201We8BKbfujy24Pxa1MkzEM795R0+I4=
// EEojJMrextWbkvmj/0b+LsqyKldE1o30zoFLpLnAb0A=

?>



...全文
534 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
1. 快递信息加密采集与存储功能 多源信息加密录入: 支持快递单信息(寄件人 / 收件人姓名、电话、地址、物品信息等)通过 Web 表单、API 接口或 OCR 扫描录入,敏感字段(如手机号、详细地址)在采集时自动加密(采用 AES-256 对称加密算法)。 对接快递公司系统时,通过 HTTPS 协议传输数据,并用 RSA 非对称加密算法加密传输密钥,防止传输过程中被截获。 分级加密存储: 核心敏感信息(手机号、身份证号)加密后存储于加密数据库(如 SQLCipher 加密的 SQLite,或搭配 Python 的cryptography库实现字段级加密),非敏感信息(如快递单号、物品类别)可明文存储但需标记用途。 密钥管理采用 “密钥加密密钥(KEK)” 机制,主密钥通过硬件安全模块(HSM)或密钥管理服务(KMS)生成,避免硬编码在代码中。 数据完整性校验: 对存储的快递信息生成哈希值(SHA-256),每次读取时校验哈希值,防止数据被篡改。 2. 动态脱敏与权限控制功能 场景化脱敏展示: 根据用户角色(如快递员、客服、管理员)自动调整信息脱敏规则: 快递员仅能查看收件人手机号前 3 后 4 位(如 138****5678)和模糊地址(如 “XX 小区附近”),需扫码或验证码验证后获取完整信息。 客服可查看完整地址但隐藏手机号中间位数,用于问题排查。 支持自定义脱敏规则(如地址隐藏门牌号、姓名用 “张 *” 代替),通过 Python 正则表达式实现动态替换。 细粒度权限管理: 基于 RBAC(角色基础访问控制)模型,通过Flask-Security等库实现权限配置,限制不同角色对信息的操作权限(查看 / 修改 / 删除)。 临时授权功能:用户(如收件人)可通过验证码获取一次性授权,查看自己的快递信息,授权过期后自动失效。 3. 操作日志与异常监测功能 全链路日志审计:

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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