private static final Charset UTF_8 = StandardCharsets.UTF_8; public static String getSignStr(Map<String, Object> params) { List<String> paramStr = new ArrayList<>(params.size()); for (String key : params.keySet()) { paramStr.add(key + "=" + params.get(key)); } Collections.sort(paramStr); return StringUtils.join(paramStr, "&"); } public static String generateSign(String content, String algorithm, String securityKey content += securityKey; System.out.println("sign_str: " + content); MessageDigest md; try { md = MessageDigest.getInstance(algorithm); } catch (NoSuchAlgorithmException e) { throw new IllegalArgumentException(e); } return bytesToHex(md.digest(content.getBytes(UTF_8))); } private static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%02x", b)); } return sb.toString(); } public static void main(String[] args) { HashMap<String, Object> params = new HashMap<>(10); String signType = "MD5"; String securityKey = "1c589c70f7bb2746027ce90c33d****" // 账号的securityKey SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); // 获取当前时间 String currentTime = sdf.format(date); // 格式化为字符串 params.put("user_id", 459); params.put("role_id", 459); params.put("version", "2.0"); params.put("sign_type", signType); params.put("current_time", currentTime); String signStr = GenerateSign.getSignStr(params); System.out.println("params_str: " + signStr); String sign = GenerateSign.generateSign(signStr, signType, securityKey); System.out.println("sign: " + sign); params.put("sign", sign); }转成PHP

private static final Charset UTF_8 = StandardCharsets.UTF_8; public static String getSignStr(Map<String, Object> params) { List<String> paramStr = new ArrayList<>(params.size()); for (String key : params.keySet()) { paramStr.add(key + "=" + params.get(key)); } Collections.sort(paramStr); return StringUtils.join(paramStr, "&"); } public static String generateSign(String content, String algorithm, String securityKey content += securityKey; System.out.println("sign_str: " + content); MessageDigest md; try { md = MessageDigest.getInstance(algorithm); } catch (NoSuchAlgorithmException e) { throw new IllegalArgumentException(e); } return bytesToHex(md.digest(content.getBytes(UTF_8))); } private static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%02x", b)); } return sb.toString(); } public static void main(String[] args) { HashMap<String, Object> params = new HashMap<>(10); String signType = "MD5"; String securityKey = "1c589c70f7bb2746027ce90c33d****" // 账号的securityKey SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); // 获取当前时间 String currentTime = sdf.format(date); // 格式化为字符串 params.put("user_id", 459); params.put("role_id", 459); params.put("version", "2.0"); params.put("sign_type", signType); params.put("current_time", currentTime); String signStr = GenerateSign.getSignStr(params); System.out.println("params_str: " + signStr); String sign = GenerateSign.generateSign(signStr, signType, securityKey); System.out.println("sign: " + sign); params.put("sign", sign); }转成PHP
用户500297581
2023年12月01日
|
浏览 137

以下是将给定的Java代码转换为PHP代码的示例:

复制代码
<?php
function getSignStr($params) {
    $paramStr = [];
    foreach ($params as $key => $value) {
        $paramStr[] = $key . '=' . $value;
    }
    sort($paramStr);
    return implode('&', $paramStr);
}

function generateSign($content, $algorithm, $securityKey) {
    $content .= $securityKey;
    echo "sign_str: " . $content . "\n";
    $md = hash($algorithm, $content, false);
    return bytesToHex(strToBytes($md));
}

function bytesToHex($bytes) {
    $sb = "";
    foreach ($bytes as $b) {
        $sb .= sprintf("%02x", $b);
    }
    return $sb;
}

function strToBytes($str) {
    $bytes = [];
    for ($i = 0; $i < strlen($str); $i++) {
        $bytes[] = ord($str[$i]);
    }
    return $bytes;
}

$params = [
    "user_id" => 459,
    "role_id" => 459,
    "version" => "2.0",
    "sign_type" => $signType,
    "current_time" => $currentTime
];

$signType = "MD5";
$securityKey = "1c589c70f7bb2746027ce90c33d****";
$currentTime = date("Y-m-d H:i:s");
$signStr = getSignStr($params);
echo "params_str: " . $signStr . "\n";
$sign = generateSign($signStr, $signType, $securityKey);
echo "sign: " . $sign . "\n";
$params["sign"] = $sign;
?>

请注意,这只是一个简单的代码转换示例,可能需要根据实际情况进行调整和修改。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;