精易论坛

标题: java 转js 20行 [打印本页]

作者: Dinesh    时间: 2022-10-31 00:35
标题: java 转js 20行
public static String encodeString(String str, String str2, String str3) {
        sequence++;
        String format = new SimpleDateFormat("yyyyMMdd").format(new Date());
        byte[ bArr = new byte[24;
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            byte[ digest = messageDigest.digest((format + str + sequence).getBytes());
            for (int i = 0; i < 16; i++) {
                bArr[i = digest[i;
            }
            messageDigest.reset();
            messageDigest.update(str3.getBytes("UTF-8"));
            messageDigest.update(bArr, 0, 16);
            messageDigest.update("icanseeu".getBytes());
            byte[ digest2 = messageDigest.digest();
            for (int i2 = 0; i2 < 8; i2++) {
                bArr[16 + i2 = digest2[i2;
            }
        } catch (UnsupportedEncodingException | NoSuchAlgorithmException unused) {
        }
        return android.util.Base64.encodeToString(bArr, 1);
    }
}帮忙翻一下成js

作者: 小白熊    时间: 2022-10-31 00:35

前提:MD5是32位的hex字符串,是16个字节,以下将MD5作为16字节的字节集看待
参数:str1 这里改叫 A str2 这里改叫 B str3 这里改叫 C 这样比较好辨认
算法:
1.sequence 是一个整数,每次执行这个函数该值加1
2.取一个日期字符串 格式为 20221031 这个变量下面叫 D
3.取第一个MD5 MD51=MD5(D+A+到文本(sequence)) 三个参数均字符串连接然后计算md5,这样就得到了MD51,MD51是字节集
4.计算MD52  MD52=(到字节集(C)+MD51+到字节集("icanseeu")) 这里中间的参数是字节集连接
5.最终结果为 MD51 + MD52的前8个字节 进行字节集连接,这样就得到24字节的结果,再进行base64编码即可

注意:字符串有中文需要进行utf8编码
翻译就不给你翻译了,讲给你听你自己搞吧
作者: Dinesh    时间: 2022-10-31 00:36
都是少一个 ]  我草 页面咋回事
作者: Dinesh    时间: 2022-10-31 00:43
补充代码

1.txt

1015 Bytes, 下载次数: 6

全代码


作者: Siempre    时间: 2022-10-31 01:32
传参有中文的话不是蛮好处理 翻译过类似的
作者: 番茄吧    时间: 2022-10-31 08:14
最好发上来你java 用来计算的原文,计算的结果,有人帮你的话,也有个参照,要调试




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4