PHP-AES-128-CBC (ECB) MYSQL导入的坑

1 篇文章 0 订阅

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值