PHP和JAVA加密和解密例程
发布时间:2020-12-13 16:05:43 所属栏目:PHP教程 来源:网络整理
导读:我有以下 PHP例程来加密我与客户端的通信: public static function encrypt($input,$key) { $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB); $input = AES::pkcs5_pad($input,$size); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,
我有以下
PHP例程来加密我与客户端的通信:
public static function encrypt($input,$key) { $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB); $input = AES::pkcs5_pad($input,$size); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,''); $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td),MCRYPT_RAND); mcrypt_generic_init($td,$key,$iv); $data = mcrypt_generic($td,$input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = base64_encode($data); return $data; } 和以下Java rotuine解密我与服务器的通信: public static String decrypt(String input,String key) { byte[] output = null; try { SecretKeySpec skey = new SecretKeySpec(key.getBytes(),"AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE,skey); output = cipher.doFinal(Base64.decode(input,Base64.NO_WRAP)); } catch (Exception e) { System.out.println(e.toString()); } return new String(output); } 为什么以下解密例程会抛出异常?
编辑:将字符串硬编码到代码后,我得到BadPaddingException. 我对解密功能的输入: wrmRa2hAoseNOev6/ascapxkLQRGX/GW3DQm3ETwBH7gJm1NetkgGFzgY4kZTE10Tv45YIcy/xoodq/GumSY5hsao1s4bkuKXZeim/IDTVr3elrqX13b81/XE5iB3iJrAqny2dQ5SsWso0lUcAZGS2Wls/lTeQiIKXEaOh7iZZ3xOtM6633iNcoiFxEnX5A0dMrdRNEOkmQ3UnQmuIGTSv0RLKuPv5r5dplGZ3N2LMMpoB0AMu3DSXFEdiD4XN49 解决方法
您可能需要使用:
Base64.decode(input,Base64.NO_WRAP|Base64.URL_SAFE) 您也可能需要不同的标志组合. 这也取决于你如何获得base64字符串.如果从网址或其他在线来源转移,有时”会转换为”(空格). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |