PHP怎么实现JAVA这种的字符串解析,求指点 
                            
                                                    
                        
                    
                    
  
                    
                    问题:对接第三方SDK因为没有PHP版本,怎么把这个java代码用php的方式去实现解析的方法,有什么解决办法吗,或者相关文档
1. JAVA代码
package com.example.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
/**
 * @program: 聊天室解密
 * @description: Aes工具类
 * @author: test
 * @create: 2022年9月19日18:32:51
 **/
public class AesUtil {
    private static final String ALGORITHM = "AES";
    private static final String AES_CBC_PADDING = "AES/CBC/PKCS5Padding";//AES/CBC/PKCS7Padding
    /**
     * Aes加密(ECB工作模式)
     *
     * @param key   密钥,key长度必须大于等于 3*8 = 24,并且是8的倍数
     * @param keyIv 初始化向量,keyIv长度必须等于16
     * @param data  密文
     * @return 明文
     * @throws Exception
     */
    public static byte[] decodeByCBC(byte[] key, byte[] keyIv, byte[] data)
            throws Exception {
        //获取SecretKey对象,也可以使用getSecretKey()方法
        Key secretKey = new SecretKeySpec(key, ALGORITHM);
        //获取指定转换的密码对象Cipher(参数:算法/工作模式/填充模式)
        Cipher cipher = Cipher.getInstance(AES_CBC_PADDING);
        //创建向量参数规范也就是初始化向量
        IvParameterSpec ips = new IvParameterSpec(keyIv);
        //用密钥和一组算法参数规范初始化此Cipher对象(加密模式)
        cipher.init(Cipher.DECRYPT_MODE, secretKey, ips);
        //执行加密操作
        return cipher.doFinal(data);
    }
    /**
     * 将16进制转换为二进制
     * @param hexStr
     * @return 转换后的结果
     */
    public static byte[] parseHexStr2Byte(String hexStr) {
        if (hexStr.length() < 1)
            return null;
        byte[] result = new byte[hexStr.length()/2];
        for (int i = 0;i< hexStr.length()/2; i++) {
            int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);
            int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);
            result[i] = (byte) (high * 16 + low);
        }
        return result;
    }
}解析的函数
/**
 * @program: 解密接口返回data
 * @description: 示例方法
 * @param data
 * @param sKey
 * @param data  密文
 **/
private static String Decrypt(byte[] data, byte[] sKey) {
    try {
        byte[] decodeStr = AesUtil.decodeByCBC(sKey,sKey, data);
        String finalText = cn.hutool.core.codec.Base64.decodeStr(new String(decodeStr, StandardCharsets.UTF_8));
        return finalText;
    } catch (Exception ex) {
        System.out.println(ex.toString());
        return null;
    }
} 
           
         
                     
                     
             
             
         
             
             
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: