PHP
JAVA版AES加密转PHP
JAVA版AES加密转PHP
前两天对接银行接口,对方给过来的demo是JAVA版的,其中涉及到加密部分,用到AES加密,需要转成PHP代码,所以在这里跟大家分享一下,下面是JAVA代码:
/** * AES加密 * 参数使用json格式, * AES加密后再对加密后的字符串进行UrlBase64编码, * @param data * 需要加密的字符串 * @param aesKey * AES key * @return */ public static String encrypt(String data, String aesKey) { try { if (isNullOrBlank(data) || isNullOrBlank(aesKey)) { System.out.println("AESUtil.encrypt data or aesKey is null."); return null; } byte[] aesByte = UrlBase64.decode(aesKey); SecretKeySpec skeySpec = new SecretKeySpec(aesByte, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encryptedByte = cipher.doFinal(data.getBytes("utf-8")); return new String(UrlBase64.encode(encryptedByte)); } catch (Exception e) { System.out.println("AESUtil.encrypt exception."+e); return null; } }
下面是PHP版代码:
/** * AES加密获取data * @param $data * @param $key * @return string */ function encrypt($data, $key) { $data = openssl_encrypt($data, 'aes-128-ecb', base64UrlDecode($key), OPENSSL_RAW_DATA); return base64UrlEncode($data); } /** * URL安全的字符串编码 * @param $str * @return string */ function base64UrlEncode($str) { $data = base64_encode($str); $data = str_replace(array('+', '/', '='), array('-', '_', '.'), $data); return $data; } /** * URL安全的字符串解码 * @param $string * @return bool|string */ function base64UrlDecode($string) { $data = str_replace(array('-', '_'), array('+', '/', '='), $string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr('====', $mod4); } return base64_decode($data); }
这样就成功将JAVA版AES加密转成PHP版。
0条评论