登录 立即注册

首页 > 绿虎论坛 > 电脑 > 讨论/求助 (发帖)

标题: java大佬帮忙翻译成go或者php或者js代码

作者: @Ta

时间: 2023-01-07

点击: 44680

public class Main {

    public static void main(String[] args) throws NoSuchAlgorithmException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ");
        String hardwareId = scanner.nextLine();
        System.out.printf("高级版激活码: %s\n专业版激活码: %s%n", transform('\uef79' + hardwareId + 8552), transform(2356 + hardwareId + 13593));
    }

    public static String transform(String str) throws NoSuchAlgorithmException {
        return hashMD5(str).substring(8, 24);
    }

    public static String hashMD5(String str) throws NoSuchAlgorithmException {
        MessageDigest digest = MessageDigest.getInstance("MD5");
        byte[] hashed = digest.digest(str.getBytes());
        StringBuilder sb = new StringBuilder();
        byte[] var4 = hashed;
        int var5 = hashed.length;

        for(int var6 = 0; var6 < var5; ++var6) {
            byte b = var4[var6];
            int len = b & 255;
            if (len < 16) {
                sb.append("0");
            }

            sb.append(Integer.toHexString(len));
        }

        return sb.toString();
    }
}


[隐藏样式|查看源码]


『回复列表(20|隐藏机器人聊天)』

1.

package main

import (
	"crypto/md5"
	"fmt"
)

func main() {
	var hardwareId string
	fmt.Println("FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ")
	fmt.Scanf("%s", &hardwareId)
	fmt.Println("高级版激活码: ", transform("?"+hardwareId+"8552"), "\n专业版激活码: ", transform("2356"+hardwareId+"13593"))
}

func transform(str string) string {
	return hashMD5(str)[8:24]
}

func hashMD5(str string) string {
	return fmt.Sprintf("%x", md5.Sum([]byte(str)))
}


虽然不太懂JAVA,但是原代码应该是有问题的,\uef79+hardwareId后,string的第一个字节居然是3f,所以虽然不知道为什么,但是在转成golang的时候只需要拼接?就行了
红米K30 Pro(变焦版)

(/@Ta/2023-01-09 12:18//)

2.

@Curtion,可能是unicode转ascii(或者iso-8859-1),发现转不了就用?代替了。

(/@Ta/2023-01-09 14:02//)

3. <?php

$hardwareId = $_GET['hardwareId'];

echo "高级版激活码: " . transform("" . $hardwareId . 8552) . "\n";
echo "专业版激活码: " . transform(2356 . $hardwareId . 13593) . "\n";

function transform($str) {
  return substr(md5($str), 8, 16);
}


请求:http://127.0.0.1/test.php?hardwareId=123456
还是用了特殊字符,否则高级激活码与java代码结果不一致。
(/@Ta/2023-01-09 15:33//)

4.
<!DOCTYPE html>
<html>
<head>
  <title>FinalShell Keygen</title>
</head>
<body>
  <h1>FinalShell-Keygen v1.0 - Developed by UltraPanda</h1>
  <p>* Only for educational purpose *</p>
  <?php
  if (isset($_POST['hardwareId'])) {
    $hardwareId = $_POST['hardwareId'];
    $advancedCode = transform('\uef79' . $hardwareId . 8552);
    $professionalCode = transform(2356 . $hardwareId . 13593);
  ?>
    <p>高级版激活码: <?php echo $advancedCode ?></p>
    <p>专业版激活码: <?php echo $professionalCode ?></p>
  <?php
  } else {
  ?>
    <p>请输入离线激活所提供的机器码:</p>
    <form action="" method="post">
      <input name="hardwareId" type="text" />
      <input type="submit" value="生成激活码" />
    </form>
  <?php
  }
  ?>
</body>
</html>

<?php
function transform($str) {
  return hashMD5($str).substr(8, 16);
}

function hashMD5($str) {
  return md5($str);
}
?>


chatgpt给出的PHP版本

(/@Ta/2023-01-09 16:15//)

5. @老虎会游泳,应该是特殊字符无法显示所以是?,我从IDEA编辑器复制粘贴 \uef79 到vscode,vs自动转换成了  符号(vscode中看是一个框里面一个问号)。
(/@Ta/2023-01-09 15:09//)

6.

ChatGPT给出的结果确实很惊艳:

图片.png(121.19 KB)

而且不清楚它是不是知道我喜欢php-cli,所以给了我cli版的代码。

<?php

function transform($str) {
  return substr(hashMD5($str), 8, 24);
}

function hashMD5($str) {
  return hash("md5", $str);
}

echo "FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ";
$handle = fopen ("php://stdin","r");
$hardwareId = fgets($handle);
echo "高级版激活码: " . transform("\uef79" . $hardwareId . 8552) . "\n";
echo "专业版激活码: " . transform(2356 . $hardwareId . 13593) . "\n";

?>
(/@Ta/2023-01-10 13:01//)

7.

只是可惜它给的结果是错误的,与java版结果并不一致。旧人的那个回答结果也不正确(还是语法错误:hashMD5($str).substr(8, 16))。

图片.png(34.08 KB)

不过我的回答犯的三个错误都比较容易修复:

  1. PHP不支持\u转义,需要使用特殊字符本身,或者其他方式表达。
  2. 误解了substr的参数含义(第二个参数应该是长度而不是位置,所以是 24-8=16)。
  3. fgets获取的字符串有换行,需要trim。

图片.png(109.45 KB)

(/@Ta/2023-01-10 13:42//)

8.

不过它还能做这种操作,方便我测试了:
图片.png(39.78 KB)
图片.png(64.6 KB)

加上 import 后代码应该长这样:

import java.util.Scanner;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {

    public static void main(String[] args) throws NoSuchAlgorithmException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ");
        String hardwareId = scanner.nextLine();
        System.out.printf("高级版激活码: %s\n专业版激活码: %s%n", transform('\uef79' + hardwareId + 8552), transform(2356 + hardwareId + 13593));
    }

    public static String transform(String str) throws NoSuchAlgorithmException {
        return hashMD5(str).substring(8, 24);
    }

    public static String hashMD5(String str) throws NoSuchAlgorithmException {
        MessageDigest digest = MessageDigest.getInstance("MD5");
        byte[] hashed = digest.digest(str.getBytes());
        StringBuilder sb = new StringBuilder();
        byte[] var4 = hashed;
        int var5 = hashed.length;

        for(int var6 = 0; var6 < var5; ++var6) {
            byte b = var4[var6];
            int len = b & 255;
            if (len < 16) {
                sb.append("0");
            }

            sb.append(Integer.toHexString(len));
        }

        return sb.toString();
    }
}
(/@Ta/2023-01-10 13:21//)

9.

@Curtion,你的答案结果不正确,要把?换成(那个特殊字符本身)结果才和Java版一致。
如果在Windows上结果不同,说明Windows操作系统编码转换对字符串造成了影响,可以尝试打开“Beta版: 使用 unicode UTF-8 提供全球语言支持”选项以得到和Linux一致的结果(打开该选项会导致在界面上使用GBK的软件乱码)。

图片.png(85.19 KB)

(/@Ta/2023-01-10 13:39//)

10.

至于golang,在经我两次提醒之后,ChatGPT给出了完全正确的结果:

图片.png(112.53 KB)图片.png(82.29 KB)图片.png(55.37 KB)图片.png(79.59 KB)

package main

import (
    "bufio"
    "fmt"
    "crypto/md5"
    "os"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Println("FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ")
    hardwareId, _ := reader.ReadString('\n')
    hardwareId = strings.TrimSpace(hardwareId)
    fmt.Printf("高级版激活码: %s\n专业版激活码: %s\n", transform("\U0000ef79" + hardwareId + "8552"), transform("2356" + hardwareId + "13593"))
}

func transform(str string) string {
    return hashMD5(str)[8:24]
}

func hashMD5(str string) string {
    hashed := md5.Sum([]byte(str))
    sb := ""
    for _, b := range hashed {
        len := int(b) & 255
        if len < 16 {
            sb += "0"
        }
        sb += fmt.Sprintf("%x", len)
    }
    return sb
}
(/@Ta/2023-01-10 13:49//)

11.

继续PHP:

图片.png(96.3 KB)

这个回答其实很不错,我没告诉它要修复trim,它也修复了。

图片.png(71.62 KB)

图片.png(126.09 KB)

图片.png(99.02 KB)

最后它真的修好了,结果完全正确。

<?php

echo "FinalShell-Keygen v1.0 - Developed by UltraPanda\n* Only for educational purpose *\n请输入离线激活所提供的机器码: ";
$hardwareId = trim(fgets(STDIN));
echo "高级版激活码: " . transform("\u{ef79}" . $hardwareId . "8552") . "\n";
echo "专业版激活码: " . transform("2356" . $hardwareId . "13593") . "\n";

function transform($str) {
    return substr(hashMD5($str), 8, 16);
}

function hashMD5($str) {
    return md5($str);
}
(/@Ta/2023-01-10 13:56//)

12.

@老虎会游泳

经过我的测试,是的,应该是我本地编码的问题,我使用JDK11运行时控制台打印的乱码,输出的结果也不正确,我昨天就是这样测试的,只不过当时忽略了乱码的事情,毕竟这种现象司空见惯了。

刚刚我使用了JDK19再次进行测试,发现控制台打印已经正常了,输出的结果也变得正常。

QQ截图20230110155140.png(58.09 KB)

现在的问题变成了为什么会这样...
红米K30 Pro(变焦版)

(/@Ta/2023-01-10 15:56//)

13.

@老虎会游泳

ChatGPT似乎没有能力来判断用户说的是否正确,它只会顺着说,而不是进行纠正,例如,golang能够支持\uef79写法

QQ截图20230110155140.png(194.51 KB)
红米K30 Pro(变焦版)

(/@Ta/2023-01-10 16:08//)

14. chatgpt小程序员的福音,但是可能会让某些公司变相增加普通程序员工作量,因为程序员完成小需求效率变高了
(/@Ta/2023-01-10 16:19//)

15.

@Curtion,嗯确实,相当于我用语言调整了它的参数。

(/@Ta/2023-01-10 16:34//)

16.

看样子以后没你们啥事了。chatgpt就搞定了
小米8(白)

(/@Ta/2023-01-12 17:26//)

17.

@老虎会游泳,哪里能玩玩chatgpt?,让它帮我生成代码
小米8(白)

(/@Ta/2023-01-12 17:27//)

18.

@艾木友尔尔巴,官网:https://chat.openai.com/ 需要自己想办法获取访问资格。
前几天别人建的免登录反向代理 https://gpt.chatapi.art 现在已经用不了了。

(/@Ta/2023-01-12 17:40//)

19.

@胡椒舰长,没啥用吧。
一加8Pro

(/@Ta/2023-01-14 10:53//)

下一页 1/2页,共20楼

回复需要登录

11月23日 19:12 星期六

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1