账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    AES 前端加密,后端解密不出来,代码如下
    57
    0

    1 . 前端js
    用的CryptoJS

     function encrypt(word){
        var iv=CryptoJS.enc.Utf8.parse('0000000000000000'); //感觉这个iv不对
        var key = CryptoJS.enc.Utf8.parse("SZSCjDcHtlnrYPzD");
        var srcs = CryptoJS.enc.Utf8.parse(word);
        var encrypted = CryptoJS.AES.encrypt(srcs, key, {
          iv:iv,
          mode:CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7
        });
        return encrypted.toString();
    }

    2 . 后端java

    public final static int AES_KEY_LENGTH = 32;
    private final static byte[] IV = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
    private final static String ALGORITHM = "AES";
    private final static String MODE = "AES/CBC/PKCS5Padding";
    
    //解密部分
    public static byte[] decrypt(byte[] decryptKey, byte[] decryptBytes) throws Exception {
        IvParameterSpec zeroIv = new IvParameterSpec(IV);
    
        SecretKeySpec key = new SecretKeySpec(decryptKey, ALGORITHM);
    
        Cipher cipher = Cipher.getInstance(MODE);
        cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
    
        return cipher.doFinal(decryptBytes);
    }

    算法一脸懵逼,懂的大神给看看错在哪,不甚感激~

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 治钤 普通会员 1楼

      AES (Advanced Encryption Standard) 是一种强大的加密技术,常用于数据的安全保护。在前端加密后端解密的过程中,如果出现解密不出来的情况,可能的原因有很多,以下是一些可能的解决方案:

      1. 混淆密钥:混淆密钥是加密过程中使用的特殊密钥,只有知道混淆密钥的人才能解密。如果你在前端加密后端解密过程中混淆密钥没有正确处理,那么后端解密就会失败。

      2. 数据格式问题:加密的数据格式需要与解密的数据格式匹配。如果你在前端加密后端解密过程中,没有正确处理数据格式问题,那么后端解密也会失败。

      3. 加密算法问题:如果你的加密算法和解密算法不匹配,那么加密后的数据在解密过程中就无法正常解密。

      4. 密钥长度问题:加密的密钥长度需要大于等于你的数据长度,否则解密时就会失败。

      5. 密钥管理问题:如果你的密钥管理不当,可能会导致密钥泄露,从而影响到加密和解密的过程。

      以下是一个使用Python的示例代码,用于加密和解密AES数据:

      ```python from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad

      加密数据

      key = b'my_secret_key' cipher = AES.new(key, AES.MODE_EAX) ciphertext = cipher.encrypt(pad(b'Hello, world!', AES.block_size))

      解密数据

      key = b'my_secret_key' cipher = AES.new(key, AES.MODE_EAX) decrypted_text = unpad(ciphertext, AES.block_size)

      print(decrypted_text) ```

      在这个例子中,我们首先导入了必要的库,然后定义了加密和解密的数据。我们使用AES.new()函数创建了一个新的AES加密器,然后使用AES.MODE_EAX模式对数据进行加密。最后,我们使用AES.new()函数创建了一个新的AES解密器,然后使用AES.MODE_EAX模式对加密后的数据进行解密。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部