首页 > 编程语言 >加解密demo(java、php)

加解密demo(java、php)

时间:2024-10-01 11:11:54浏览次数:8  
标签:java String demo 撞库 加解密 hutool signs import php

数据格式

     * @param args
     * 撞库---入参加密字段signs加密前格式
     *
     * {
     *     "mobileMask": "134123412**",
     *     "city": "武汉",
     *     "system": "qxh"
     * }
     *
     * 撞库---返回加密字段signs加密前格式
     * {
     *     "md5List": [
     *         "01f32b38b7b208a574c512a40d30cff0",
     *         "01f32b38b7b208a574c512a40d30cff0"
     *     ]
     * }

java版

import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.experimental.Accessors;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {
    /**
     * 引入依赖
     * <dependency>
         * <groupId>cn.hutool</groupId>
         * <artifactId>hutool-all</artifactId>
         * <version>5.6.5<</version>
     * </dependency>
     *
     * @param args
     * 撞库---入参加密字段signs加密前格式
     *
     * {
     *     "mobileMask": "134123412**",
     *     "city": "武汉",
     *     "system": "qxh"
     * }
     *
     * 撞库---返回加密字段signs加密前格式
     * {
     *     "md5List": [
     *         "01f32b38b7b208a574c512a40d30cff0",
     *         "01f32b38b7b208a574c512a40d30cff0"
     *     ]
     * }
     */
    public static void main(String[] args) {
        //撞库-----------------------------------------------------------------
        String checkUrl = "撞库url";
        String timestamp = String.valueOf(System.currentTimeMillis());
        String key = String.format("%s%s", "MCXBIjANke", timestamp).substring(0, 16);
        CheckVO checkVO = new CheckVO();
        checkVO.setMobileMask("134123412**")
                .setCity("武汉")
                .setSystem("qxh");
        String signs = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).encryptHex(JSONUtil.toJsonStr(checkVO));

        Map<String, Object> map = new HashMap<>();
        map.put("timestamp", timestamp);
        map.put("signs", signs);
        String resultData = HttpUtil.createPost(checkUrl).contentType("application/json")
                .body(JSONUtil.toJsonPrettyStr(map)).timeout(5000).execute().body();
        //请求完成---------------解析结果
        JSONObject jsonObject = JSONUtil.parseObj(resultData);
        String result = jsonObject.getStr("result");
        JSONObject data = jsonObject.getJSONObject("data");
        String signsReturn = data.getStr("signs");
        //-----------解密
        String decryptStr = SecureUtil.aes(key.getBytes(StandardCharsets.UTF_8)).decryptStr(signsReturn);
        JSONObject md5Map = JSONUtil.parseObj(decryptStr);
        JSONArray md5Array = md5Map.getJSONArray("md5List");
        List<String> md5List = md5Array.toList(String.class);
        System.out.println(JSONUtil.toJsonStr(md5List));
        //撞库-----------------------------------------------------------------

    }


    @Data
    @Accessors(chain = true)
    public static class CheckVO {
        private String mobileMask;
        private String city;
        private String system;
    }
}
View Code

php版

代码在线运行网址 https://www.cainiaojc.com/tool/php/

<?php
$key = 'MCXBIjANke172760'; // 生成一个随机的16字节密钥
$data = '{"md5List":[]}';

// 使用 PKCS5Padding
$padding = 16 - (strlen($data) % 16);
$dataPadded = $data . str_repeat(chr($padding), $padding);

// 加密
$encrypted = openssl_encrypt($dataPadded, "AES-128-ECB", $key, OPENSSL_RAW_DATA, openssl_random_pseudo_bytes(16));

// 加密后的数据通常需要进行 base64 编码以便存储或传输
$encryptedBase64 = base64_encode($encrypted);
$encryptedHex = bin2hex($encrypted);
echo "加密后的数据(Base64): " . $encryptedHex . "\n";

// 解密
$decrypted = openssl_decrypt($encrypted, "AES-128-ECB", $key, OPENSSL_RAW_DATA, substr($encrypted, 0, 16));

// 移除填充
$pad = ord($decrypted[strlen($decrypted) - 1]);
$decrypted = substr($decrypted, 0, -1 * $pad);

echo "解密后的数据: " . $decrypted . "\n";
?>
View Code

 

标签:java,String,demo,撞库,加解密,hutool,signs,import,php
From: https://www.cnblogs.com/qq376324789/p/18442756

相关文章

  • php的urlencode和rawurlencode区别
    urlencode和rawurlencode都是用于对URL进行编码的函数,但它们在处理方式和应用场景上存在明显的区别。以下是关于这两个函数的详细比较:一、定义与标准urlencode:基于rawurlencode标准,但有略微的不同,它定义在rfc1866,这个rfc属于html标准的一部分,编码方式和application/x-www-for......
  • PHP中的PEAR是什么
    PHP中的PEAR是PHPExtensionandApplicationRepository的缩写,即PHP扩展与应用库。它是一个PHP扩展及应用的代码仓库,提供了许多常用的PHP库和工具,涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService等许多方面。一、PEAR的功能与特点提供丰富......
  • 基于php的女大学生卡路里跟踪与分析系统小程序app安卓设计(源码+文档+部署讲解等)
    前言......
  • 运营商二要素接口如何用PHP实现调用
    一、什么是手机二要素?运营商二要素又称手机二要素,运营商二要素核验,手机二要素核验,即传入姓名、手机号码,校验此两项是否一致。实时核验,返回校验结果!二、手机二要素适用哪些场景?例如:电商平台1.用户注册与登录:在电商平台注册新用户或用户登录时,验证手机二要素可以2.交易安全......
  • ELK--收集日志demo
    ELK--收集日志demo安装ELK日志收集配置启动容器springboot配置测试之前项目多实例部署的时候,由于请求被负载到任意节点,所以查看日志是开多个终端窗口。后来做了简单处理,将同一项目的多实例日志存入同一个文件,由于存在文件锁的竞争,日志内容混乱,性能差且效果也不好。......
  • php docker image
    QuickreferenceMaintainedby:theDockerCommunity⁠WheretogethelptheDockerCommunitySlack⁠,ServerFault⁠,Unix&Linux⁠,orStackOverflow⁠SupportedtagsandrespectiveDockerfilelinksNote:thedescriptionforthisimageislongerth......
  • php: 查看opcache的使用情况
    一,代码:opcache的各项参数设置效果怎么样?是否需要调整?我们需要了解一个opcache使用情况的统计,以供调整参数时处理看php代码:<?php//确保已经启用了Opcacheif(extension_loaded('ZendOPcache')&&function_exists('opcache_get_status')){$status=opcache_get_stat......
  • php 文件上传
    环境ubuntu22.04thinkphp6.1.0php-fpm8.1nginx1.18.0实现文件上传本质上就是html页面这边提交一个表单,请求上传文件<formaction="http://192.168.1.13:8888/view/upload"method="post"name="file_upload"target="_blank"enctype="mul......
  • php email功能实现:详细步骤与配置技巧?
    phpemail发送功能详细教程?如何使用phpemail服务?无论是用户注册、密码重置,还是订单确认,电子邮件都是与用户沟通的重要手段。AokSend将详细介绍如何实现phpemail功能,并提供一些配置技巧,帮助你更好地掌握这一关键技术。phpemail:配置环境在开始使用phpemail功能之前,确保你......
  • thinkphp6调用微信商户支付-合单支付工具代码开发
    合单支付基本在加盟店或是分公司或是营销系统里面常见。他的出现,打破了传统提现支付或是转账支付。他的业务原理其实很简单,就是需要优先申请非普通商户,其次是每个入驻的商户都需要申请普通商户。在这之前一定要申请好对应的场景服务,比如公众号支付就需要优先申请公众号,小程序支......