php代码:
ini_set('display_errors',1); //错误信息
ini_set('display_startup_errors',1); //php启动错误信息
error_reporting(-1); //打印出所有的 错误信息
header("Content-type:application/json;charset=utf-8");//字符编码设置
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:OPTIONS, GET, POST'); // 允许option,get,post请求
header('Access-Control-Allow-Headers:x-requested-with'); // 允许x-requested-with请求头
$key = "1234567812345678";
$file = "log/bank_connect_log.txt";
// 接收数据
$content= $_REQUEST['data'];
// $content = file_get_contents('php://input');
file_put_contents($file.date('Y-m-d-H-i-s-1'), $content, FILE_APPEND);
// echo 1;
$content = urldecode($content);
// print_r($content);
// $content = str_replace("application/x-www-form-urlencoded", "application/json", $content);
$data = json_decode($content, true);
// print_r($data);
$filename = $data['fileName'];
$filedata = $data['fileData'];
$txnSeqId = $data['txnSeqId'];
$ip = getRealIp();
// 测试用数据
// echo "Data:".$data;
// file_put_contents($file, "filename: \n".$filename."\n", FILE_APPEND);
// file_put_contents($file, "txnSeqId: \n".$txnSeqId."\n", FILE_APPEND);
// file_put_contents($file, "ip: \n".$ip."\n", FILE_APPEND);
// 将文件编码为ASCII
// $encode = mb_detect_encoding($filedata,array("ASCII","GB2312","GBK",'BIG5','UTF-8'));
// echo "before decrypt: ".$encode;
// 转base64并解密
echo strlen($filedata)." ";
file_put_contents($file.date('Y-m-d-H-i-s').".b64", base64_decode($filedata), FILE_APPEND);
// echo strlen($filedata)." ";
$filedata = decrypt($filedata, $key);
$c2=strlen($filedata);
$res = file_put_contents("log/".$filename."_".$ip."_".$txnSeqIdi."_".$c2, $filedata);
if(!$res) {
echo gen_json(['99', '未能生成text文本']);
// 错误log数据
file_put_contents($file, "error: 未能生成text文本\n", FILE_APPEND);
exit();
}
// 把交易信息记录到数据库yzyhjk中的t_yzyhjk表中
$host = "127.0.0.1";
$port = "3306";
$dbname1 = "yzyhjk";
$username = "yzyh";
$password="Tls@2008033";
$db1 = mysqli_connect( $host,$username,$password,$dbname1,$port );
$dbname2 = "sw_sqd_pc";
$db2 = mysqli_connect( $host,$username,$password,$dbname2,$port );
if(!$db1){
echo gen_json(['99', '未能连接数据库']);
exit();
}
// insert into yzyhjk (filename, status, txnid, srcIp) values ($filename, 0, $txnSeqId, $ip)
$sql = "insert into t_yzyhjk (filename, status, txnid, srcIp) values ('".$filename."', 0, '".$txnSeqId."', '".$ip."')";
// echo $sql;
$ret = mysqli_query($db1, $sql);
if(!ret) {
echo gen_json(['99', '数据插入失败']);
exit();
}
echo gen_json(['00', 'Success']);
/**
* 与java等的aes/cbc/pcks5加密一样效果
* @param $data
* @param $key
*/
function encrypt($data, $key) {
return base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA,'0000000000000000'));//OPENSSL_PKCS1_PADDING >不知道为什么可以与PKCS5通用,未深究
}
/**
* 可以解密java等的aes/ecb/pcks5加密的内容
* @param $data
* @param $key
*/
function decrypt($data, $key) {
return openssl_decrypt(base64_decode($data), 'AES-128-CBC', $key,OPENSSL_RAW_DATA,"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");//OPENSSL_PKCS1_PADDING 不知道为什么可以与PKCS5通用,未深究
}
导入mysql字符集转换和坑(包括非法字符)
alter database databasename character set gbk;
iconv -c -f gb18030 -t utf-8 202011255772ec0c3f1c196d158183b3ae59efff.txt_10.35.162.246_10000072 -o utf8.txt
load data local infile 'utf8.txt' into table t_bank_state character set UTF8 fields terminated by '\t' lines terminated by
'\n' (A1,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A2,A20,A21,A3,A4,A5,A6,A7,A8,A9,BANK);
iconv('utf-8', 'gbk//IGNORE', $value); //IGNORE解决特殊字符转码问题
23334353637383132333435363738 -iv 00000000000000000000000000000000 -p -nosalt -a -A -md sha256
openssl enc -aes-128-cbc -d -in /var/www/html/log/connect_log.txt2020-11-27-07-14-00.b64 -out encrypt_decrypt.txt -K 31323334353637383132333435363738 -iv 00000000000000000000000000000000 -p -nosalt -a -A