数字签名

有没有懂java的小伙伴,能帮我看看这个签名用php咋写吗

publicstaticbyte[] encryptMD5(byte[] data) throwsNoSuchAlgorithmException {
    MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
     md5.update(data);
    return md5.digest();
}
publicstatic String encryptBASE64(byte[] key) throws Exception {
    return (new BASE64Encoder()).encodeBuffer(key);
 }

还有这个示例,我怎么试都得不到FXqyPkRNTfmIl6be83UqNg==这个内容

假设签名字段的内容为:“RI696080980CN,81696083345,88169608101”,
密钥为 123456
◆ 那么要签名的内容为“RI696080980CN,81696083345,88169608101123456”
(默认 UTF-8 编码,不包括双引号),经过 md5 和 base64 后的内容就
为 FXqyPkRNTfmIl6be83UqNg==,URL 编码后为:
FXqyPkRNTfmIl6be83UqNg%3d%3d
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

file

$data = "RI696080980CN,81696083345,88169608101";

$key = "123456";

$signData = $data.$key;

$sign = base64_encode(md5($signData, true));

echo $sign;

$signUrlEncode = urlencode($sign);

echo $signUrlEncode;

file

1年前 评论
lalalahuya (楼主) 1年前
讨论数量: 6

ChatGPT:

以下是使用 PHP 实现相同功能的代码:

function encryptMD5($data) {
    return md5($data, true);
}

function encryptBASE64($key) {
    return base64_encode($key);
}

encryptMD5 函数使用 PHP 内置的 md5 函数计算给定数据的 MD5 哈希值,并返回二进制结果。同样,encryptBASE64 函数使用 PHP 内置的 base64_encode 函数对二进制数据进行 Base64 编码。

需要注意的是,PHP 的 md5 函数和 Java 的 MessageDigest.getInstance(KEY_MD5) 方法计算 MD5 哈希值的方式略有不同。在 Java 中,md5.update(data) 方法会将数据追加到已有的数据之后,而在 PHP 中,md5 函数需要将数据和 true 参数一起传递,以便返回二进制结果。如果需要与 Java 的 MD5 计算方式保持一致,可以使用 PHP 的 hash 函数来实现:

function encryptMD5($data) {
    return hex2bin(hash('md5', $data));
}

这个版本的 encryptMD5 函数使用 PHP 的 hash 函数计算 MD5 哈希值,并使用 hex2bin 函数将十六进制结果转换为二进制结果。

1年前 评论
lalalahuya (楼主) 1年前

file

$data = "RI696080980CN,81696083345,88169608101";

$key = "123456";

$signData = $data.$key;

$sign = base64_encode(md5($signData, true));

echo $sign;

$signUrlEncode = urlencode($sign);

echo $signUrlEncode;

file

1年前 评论
lalalahuya (楼主) 1年前
function generateSign(string $data, string $key): string
{
    return urlencode(base64_encode(md5($data . $key)));
}

echo generateSign('RI696080980CN,81696083345,88169608101', '123456');
1年前 评论
lalalahuya (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!