开发者社区> 问答> 正文

帮忙用PHP实现如下Java的功能报错

"

package com.company; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.Arrays; import javax.crypto.Cipher; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec;

public class AES256Util {

private static final byte[] RAW = {50, -115, -81, -50, -32, 55, -120, 112, 4, -98, -78, -8, 5, 56, -46, -19};

// 加密
public static String encrypt(String s) throws Exception {

    byte[] raw = Arrays.copyOf(RAW, 16);
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    IvParameterSpec iv = new IvParameterSpec(raw);
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
    byte[] encrypted = cipher.doFinal(s.getBytes("UTF-8"));
    return URLEncoder.encode(new String(encrypted,"ISO-8859-1"), "ISO-8859-1");
}

// 解密
public static String decrypt(String s) throws Exception {
    byte[] raw = Arrays.copyOf(RAW, 16);
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    IvParameterSpec iv = new IvParameterSpec(raw);
    cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
    byte[] encrypted = URLDecoder.decode(s, "ISO-8859-1").getBytes("ISO-8859-1");
    byte[] original = cipher.doFinal(encrypted);
    String originalString = new String(original, "UTF-8");
    return originalString;
}

public static void main(String args[]) throws Exception {
    String msg = AES256Util.encrypt("我只是个测试!");
    System.out.println(msg);
    System.out.println(AES256Util.decrypt(msg));
}

}

"

展开
收起
因为相信,所以看见。 2020-05-27 10:03:07 1156 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    "

    你给你一个结果,比如加密 我只是个测试! 密文 是什么? 多加密几个。

    提供,明文 和 密文,然后用php实现的时候 才知道 明文 加密后 密文 对不对呀。

    ######

    http://www.thinkphp.cn/topic/...

    看看这个写的挺多的 关于aes加密

    "
    2020-05-27 17:33:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载