Java实现JS的CryptoJS.AES.encrypt

爬虫一个网站的时候,发现文章内容是在网页加载完成后调用js填充的

    function secret(string, code, operation) {
            code = CryptoJS.MD5(code).toString();
            var iv = CryptoJS.enc.Utf8.parse(code.substring(0, 16));
            var key = CryptoJS.enc.Utf8.parse(code.substring(16));
            if (operation) {
                return CryptoJS.AES.decrypt(
                        string,
                        key,
                        {iv: iv, padding: CryptoJS.pad.Pkcs7}
                ).toString(CryptoJS.enc.Utf8);
            }
            return CryptoJS.AES.encrypt(string, key, {
                iv: iv,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            }).toString();
        }

因为我是用java爬虫的,使用需要将其js转换成java调用

下面是具体实现代码

package FWW;


import com.github.houbb.heaven.util.secrect.Md5Util;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class CryptoFunctions {

    public static String decrypt(String encryptedText, String key) throws Exception {
        // 计算MD5哈希
        byte[] md5Bytes = Md5Util.md5(encryptedText).getBytes();
        System.out.println(md5Bytes.length);

        // 使用MD5哈希的前16字节作为IV,后16字节作为密钥(注意:这里假设key足够长以生成32字节的MD5哈希)
        byte[] iv = new byte[16];
        System.arraycopy(md5Bytes, 0, iv, 0, 16);

        byte[] secretKey = new byte[16];
        System.arraycopy(md5Bytes, 16, secretKey, 0, 16); // 如果MD5不够32字节,这里会抛出异常

        // 初始化密钥和IV
        IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
        SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey, "AES");

        // 初始化Cipher
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);

        // 解码Base64加密的文本
        byte[] decodedValue = Base64.getDecoder().decode(encryptedText);
        System.out.println(new String(decodedValue));

        // 执行解密
        byte[] decryptedValue = cipher.doFinal(decodedValue);

        // 转换解密后的字节为字符串
        return new String(decryptedValue, StandardCharsets.UTF_8);
    }


    public static void main(String[] args) throws Exception {
     
        String re = "8lru0LvD3+HLU/cZXNk+yLS29lNQRi4hk6wTif\\/ID\\/TMwhb0+oflrL1hrALU4otz8nmD3I2kwutJO4Mghly6k0RIfrWkSyAVeKYQlmvoLCE0dnRQfKbcDV6q4c7naX0PWc4SbFMxzCkilPcWbF6lq3csa9lEsNfXzxW1NDI0ymZrZOYa55Zm\\/RvPJHQdYVAKHmXrRIdYEBDcx\\/TPYbFJcEhWos3S2XuV\\/1yAyMsb8KlwI+u59JIyBqGrWG8OEOaoptSrwnFHO3KCjwzK6biRMvLpfQZW89KSWEYd6HssrSyPFVoQcvE6mJnFeW2pqKp9\\/6eWhx5vohIg8DwYyDKlMCPVE5CNtN2x1oSvg65GJfOF+oK+zxuwHUehHg0nq8APJ7z3RX+z+lieVSjwXThxR7n2itwA6tr0hcq+VKGGu1IrZB+yWDADNeTtx5KLp9TpmvgiU4TFPRba4ZsQ4dP1gpcb4sy+Gqa5zAsfUGYrYlFJa2PL1tiSs9drDQTxNmBp9acUKCJL4WXSfbzPD1iAD5NANTks2Oo8q\\/yqstjmZ\\/JYNTxLLgqPAmf\\/a5yT8wPfZD6oMk1sNZ8wKeI\\/YbCngQHIrk0nOxe9KZkiKaKezl0WlSzYl36dgtbKQm654rmCZTFqtNuvgAez2VuMqnIi8uKBor667TAMKBAFuVRJSm0iTndwtmRC+YsYiGNr3\\/1OAc15un0tqfkQQFGRhEeeKSNGcCXXGU4f5xvvhLaYxrvZsz9ywEEL9ZZC52g516b7QSDQs3A+bWsJ\\/uCdNeJ0NGttzOu9aCAFUv7TbfZOib2k4wqPFmos2JluYWrGV8QpZhg4iWM8TZ7zm8HI2l1hLJNUuDoYYmuzp9wpRQ+yLNfTSoT2TfWwCltjaP64mShpCA2GI1+mtE+HMqOgkRatnBlD+412We0ZC182Ep8zWay\\/vNVf9FkbxoINToytVcYeZd6vHtJHPRADjq3yUKvY2IBj7nw03dX2Q2Ylgii8Qf5chdg8PRPCs0R+L306pnBOUZweaF72ab8PhLyjzFFgbVHQVpqizS0CH2wZakqJycc84yc5mNZvKjCbnOlgxq0T37kY2SD42Gk3STHanIByK7VsFq56kvDVdER6VkM8DK+\\/eKJgZWyjRenq+pMhkjPJ5QRRJBwJk2K3gwXkl6E8ibsoUc1S4lwBuJkMc1WTnKHfssAhCflnIukFShR\\/tAqNZjArxD6XbIZTLb5BvuXCfzydAz5jTodhY9xfTroShpplMELzHdJoeC3JdUtphyeJneU\\/3NAaNoRBohZ7WCanHqebJw3c+KGqKfmLlILy8RquDOtBchusrlPbwPztgmiCyLJD9BuKs3e3FEYMIQoZNmlxghJ9DYlb0VpGpU0TJELMD0kde6XNqzzfPNIdzrfUBD\\/QNBiyoAIXbDSqKQrj5SWpbGDMrIJ+OcIkSk3HZQbnV4wvBhgRXlIUxyVSW8pGfsG9+KNUfkl7Bdc9OIahsS\\/J9mYMs7ownWDNojJsdoLmFXaLwFciVfMo31iJN+Ie7pxye6r7mRGoryiruBItonbchyQi21GuAWLlGbo8wdo\\/fROA2hEYMs12ZnOfx\\/1VLCHXKXTRJU7uiI4+rUNimdefq1SwKDxPiUlpMdVDPfxiHjFvvjl5YrbgrxnLxjr0\\/YyxHSVP7AvtR\\/fvhCM2i0K74P5FMK3cUK91wZGYENWmMC+vuYsR1Iq0lEAQoM2rHlTVbe33pOOXUWBYbx+GQsD+RvAJaHNltyzx2TT3byJnwKYwh2N3ghhax0C5dR0NzxZ9GGM2wgLFWDj7Z\\/f9QOuNIkedpOM67ZIDkvsVxhipgHDZwGfW9Xsq1I1nbEMDUWGv8bT4oR3OueyrB4Sp+a6XwdOavs5uxzlHcRYmE2ptxTWq+Ji2LnJ9u6nIyzVC9pS1MjTvyox5JuV2kR511e5WhgLj0VsgCUDJIPyeF8JlbY30z0K+jCjwNn9PkUnK2dkl9t4QAuF4R46\\/dapr85vpxW6nZQgbMFfDAB4MNmn9u+jg74FqemIW1p7339HE5Gn28IDj+fxixBhACRAY\\/Em8oJR9gTRClCBUvsE5SnBWV9UZEOUQx\\/VPRTI\\/zifF4avEq\\/2QsasaZzxSb5jOqAgqem1GzoOedyDZDPSAqJ4vxMQUGzbIwUBmC1uzS2YdGZPuR5+0IF6bGxkROTqtkMGo5HHg23MaA8UfzaPatu17vC67Xvhiy+DwHGiAA2i9hJ2eYDO0bg1Yz4BBJBUYJv\\/LgRrBRpOXljI\\/eegdBo8pUioEkhnQVrlnEG4MDu4zEmYFrXMvSXzwgm\\/ZjCoSzsoEXi6DeDrabtKMh9f5I+dn0f9lFS0EPm5VbZktz1xWmTn7UFsof21SkeOg\\/zz0DGPJDIF6SYJenEaApQ+iS2zXnjXwPgF1t0xypirwzkVCsgtHiQPypbJOwuqLLp\\/SH\\/gmd4Di5GxAfsxMXaoUWBHj7AY5gn3cV\\/\\/AZ9LaI3Z1wFDJ5E1FURXrNEXttBJ7N43b4ytdoRq91AuJJDVIan4LSUwiH8ho5hZmmzITe3Jb2CkRQ4hGA1U40S\\/94IS8tefugrGALetfS9sIKRaVqwNfdyivgixEUmcLD4KpXAwqSBkDnovuXSRG4uOPCSTmC+BDUiyp7Q+1tobqIcfvmulPDa4mrLWPFwOK+QXHXubh6FTn+Q7NkwMwf9B0VTvUM6MjsOB1drdJYklHHKwSKC5+7EB7fqn6oOTJlsBqT15QUyDsOgTpP6g39\\/p4C0bCRCEHe8kWgjWx3bai2tVrPAI2h9CgfpCp6iOtizp4QzeXKvP+vVTmCRG6PFy6zJUYdWae85Febn2On7aICc6xp3d8xbinFb15I5QgYZOwAEQ8zbt1eJnpyk\\/YAwNKzKhEnb1f\\/XHttR777wOQIhpG6Nhj4TcNdQwW1EM4+7ShnOQi1hXfHcNXa49EAE\\/koVH8JucPDRWbPMJsc6xcfLHUVqWG7TrNBLAP1CH\\/BGAW8Pbjai\\/yihvJiNZncS11XtATodkqPk4O6EKmfyc8gNGGHzW9Uzu6AEIgxhANDiKETnmWrp5eaJ15DAGrf9b7k4a2KCOAiyHlqmSO773qmWta9ehzUQLkXavEzT7YhjsDrenJdvlPb7h074a664Ysr1eGl78tETjRj6YUpkhchGDc0h7o2Id1saDloMpkCkbqgi95F6TrK259rT71opcU4vDr+Ph9J0koTQzCTWJvvQ36EzLYrk8uMEjhTjQUzokr6\\/2cYy7c7efaVlxncuEazPOheNSBXoIUkCdNmWqoBV0EHHPVH9Bry06BHIq4op1I2kfaAs1gSc0ZIZLicLQcYYxnBDsImJbLm2ZUuu6LJE7DJHewoFrqxSBOUGvlrIkMgIzOUCPRpXPmlYlahX1ctN3KG+697Oq11E0Pdm07gVRelVv06hAxXJKOdioGGOGqnwJkEtvRRZ38gOLXe9sSS2rFLJXnGjnEnTBomo+9GN4edxFgu3vj4GHhxsB6Yo6IB9QuFZBBkRR02PGf9SfAx9J3XCPIZ9dE1mDRJ8HhOS8nwS\\/r5PFpwUIDFPaD90pa55DsNd6m9dICPLZ3rayaznM9MNLlAwJGPawao8fJVFRWUg8+rFcKi0DhidmXXIt+GHv1UdFlZbKuLR1QGRsJmEA5UMkapTWuyazxmEOnAimSqyPkvUpOz7eJWWK2C4nAxPNuKxWnXe88qdl+Yvfdf2fB7cla1q9s6YSR202fQM4QMuIcUBWVlO5\\/X\\/1BIP3bzWJrE9RT9xdpxL8Wg6iF+ClR9Zfhd5jSlcxwLPMS4sQktKLPKs3a9wC\\/sbmgQNziBR81bUw6XCpsins3gy\\/YxjkBIL+ofn21YmRx8UT1kxWXxn2HANmpwl6F3qWOn3sEKj4QGJSaz2txz37tvcG42tmyC+aojIeeV8gJdor1mqj6d1QoG\\/oinxjmb8GfGaRjNppcENUVqXPdSUt2\\/VEhkM0Ak5pjbfpRJQC9U+QD\\/CmKUy\\/WasUJSAqN3DyjDO9B6HTTWfBFSkPJw2IdhYd4alg907H8crbFERe58QpxBv7An4PenO6NJPMc0LOu3AcUUgYK9i12xUQ3FM\\/5DTBr402LivEl3\\/VvCfWyg6NSq3gQ420sQt7pkxh+htSAr42vYERpZ7srujY+DHsPoA7Y\\/j8pPPpaJiWRx0byYYRD0ph5X3ZA2uAEEKzCwmDNU+81p3OmvL4vBw7Lf3LaueDhFrMTAoe7q94ly7HQiNK\\/PAo+NQ2JcCESpHuAkYVCqw0vbPMOyXxZiFHkeS720wAeEUkLyrwgB2TB1+HJOz2Gry2GqFInKbcKoz0HMHipM6xMbUj+FplMk5TuDISCxr8kO3ld8Ya42sC\\/doDxq5gUvvytgrdb7YB9HsCMWE16M7dVOCk6HTdw2XuyBPKo1jW3qn7aKAiMBaGRquOwZT5eEEzyaQ3D76vzKQlq85omQZ\\/XAxpHcJI0fycHXTMFCabkWrt6VctjBppIZL2X0UWM2VFlPYv6daDc9i8K4QTV1r1zO7EdlCKsQWrQ26CF+6H6Ni8FdNK2btwYGctzNEnFz7+PMfjN\\/hJQgdzcIGhQq7CioBzh7C\\/V8N5n+zZKj92ROXs2Pr42VjZsbtcJrmhKKkSDZmJUloRRIfpcMSpMxh84TDrqZnaPEgd1E1LSo2t++UjLi2Y+AsBI1p3SnYrf07hCw9jz\\/L\\/ymiYx+C4k3pLs54qXyzBd\\/vcSZWfSA9eXUWXnKlEKFTM6xsdqUaqcLTR3uG9wnsUJoLju+x1jB9XdiOS5kYRv9Of5bgGhthEQjQk2qDLVotTE6JNNycNqrOcf8DXuuS0PAaLjGuqZF4rsfN3JCqCLQ2MEGLIBv3OBgQ1rV4bcT9ADkxyZ8RihHIbBrRd3OgToteM2QrEn+67h+5lSbrvneOL3bPHT4W2heJbP2AkHIuIjLFaOR6zXWxFSTjMTQt4mpsdEY86CyTQ2XwvWImQzAUfT0KMHfOQxTAHUBH0eQzPIwXjLqdookktUoXKF6fs91oFwnwTKapVvh7w5ZvsnZ+m88fiEo3HlYsQa6\\/zmh2JUoZUD\\/o+cXJJFglwKbouyNuDPEZYWnaNrHyx7bVT5e5t7e9n3rGMapvx7XHiyCe5vaGF5jGnQz7cuk8ht3g\\/InGhNrhfS+nPiVXjwaeaNySTItHlgFrrZ8QPi3Xi2ceC\\/xt8ZBLuHXJF0QrltIun\\/FE738Dd+jtNghiSgYwf14\\/Za29zdj\\/GbQg53Xcp0uDOCjdrD0l514\\/QnfKy9dtGAbTEp1wo5GV8U\\/RuiXvxhzYbBak\\/A40UVzHltf6j2ekMoqD1FYwpOR2tBMJodQ0EeOC5Gl+yBULC3tUHUlzxs07ma4qHR17ntUjaENu5CsqbyZZDTOHaJO90L5\\/dP9TQiM+A40hO5X\\/rY6nSqFYi82WwJSeXEqsP1V\\/F\\/mp6e9dEGvfFBe8D+CupNXW\\/ISCnfd9p4ise57YIRdla7s85UFbMjaCT11ivvg0J6eyuBi7Cq82den0kAKW+xl5mWP0Tqw4k18LpQWnVU1yY\\/ciR1\\/JCK+HofCtFVHd0vxLcJgvvjBxMZkXAFQMDMoABTp5lzwi49JBop6uzHInz9hP\\/AWunHFYsGxn9ImRzfGUzmQBR6yoX+LHkChnUxUHZX6nbj7IX1BMrT7j5O0kOvdhHknTXeRLjtifgF96OkhiUIoBQZHHiqoqxzFq8XxNYcVVEovekSa8EsgpL8dPZOM1NYOpPPwyTll5+Jdku0G4stsrmEgAIWoU3G9eYAW6zMbVwLLfoOvJVGNDtzh4fXI8C0RIMn3rrXYW4vrmTWmdUZ5BB27DUQPfDPo5Oy6vQdvYsqU1fXrFgjddED6LYEbcYsF3BKEz+OIXdtTIQlyDG8jTuJolkqvyDBT7FAyLTSxC1zfOldM65bTqS0klFEbY+IgxOGS8YGdnAb3OxgHSEiIBXEOrmAARNx+l3QkzWfspw0bjknRNVjNiHzQS0IM424R5+qDR2HjT0oDDkWT7LN6tr9PO0lmeSEg7bmKQ07w6CrporIo973YlGbndWoasTF75g60BJVsda+44LsJAIe4JUGqwZxau9qpnsRHFe7lDNqZ4uFpt4\\/6k0eXhUJaRLUYZR1oTOuJarEc1mY+4\\/MwFIYX9Sa5T4vDbM6O+0WLFvyI5nVoIII8Ia+we6\\/LXj7U1T1h5vA55A00PcDrJQnIOFmvlTNM8Mn\\/blrS7VLIjFVAmJGozeXyfOQEt5Xq6CuvHo+X0x3vtfdUDzcOLPDhGx935HoMOedJxYv1\\/SNURXKLz2N1kPsHE8SzxCR24MfKwiifpJaRTuzqf+9y8AgwasCAH7FiG1+I5mWS8LA+8x\\/aqrNHAAFNbrzIGRocI8nGaEEkJCJoqEA\\/K2xMk4mQb3F3teT8VZ16xQj1ES1SaBPn1YYm+O9JT0=";
        String key = "35aeefec5713253645bba958009aaefe";
        re=re.replaceAll("\\\\","");
        System.out.println(re.indexOf("\\"));

        String decryptedText = decrypt(re, key);
        System.out.println(decryptedText);
    }

}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值