首页 > 代码库 > Android 和 PHP 之间进行数据加密传输
Android 和 PHP 之间进行数据加密传输
Android 和 PHP 之间进行数据加密传输 [代码] [Java]代码 1 mcrypt = new MCrypt(); 2 /* Encrypt */ 3 String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("Text to Encrypt") ); 4 /* Decrypt */ 5 String decrypted = new String( mcrypt.decrypt( encrypted ) ); [代码] [PHP]代码 1 $mcrypt = new MCrypt(); 2 #Encrypt 3 $encrypted = $mcrypt->encrypt("Text to encrypt"); 4 #Decrypt 5 $decrypted = $mcrypt->decrypt($encrypted); [代码] MCrypt.java 001 /***********/ 002 /**JAVA**/ 003 004 import java.security.NoSuchAlgorithmException; 005 006 import javax.crypto.Cipher; 007 import javax.crypto.NoSuchPaddingException; 008 import javax.crypto.spec.IvParameterSpec; 009 import javax.crypto.spec.SecretKeySpec; 010 011 public class MCrypt { 012 013 private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!) 014 private IvParameterSpec ivspec; 015 private SecretKeySpec keyspec; 016 private Cipher cipher; 017 018 private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!) 019 020 public MCrypt() 021 { 022 ivspec = new IvParameterSpec(iv.getBytes()); 023 024 keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES"); 025 026 try { 027 cipher = Cipher.getInstance("AES/CBC/NoPadding"); 028 } catch (NoSuchAlgorithmException e) { 029 // TODO Auto-generated catch block 030 e.printStackTrace(); 031 } catch (NoSuchPaddingException e) { 032 // TODO Auto-generated catch block 033 e.printStackTrace(); 034 } 035 } 036 037 public byte[] encrypt(String text) throws Exception 038 { 039 if(text == null || text.length() == 0) 040 throw new Exception("Empty string"); 041 042 byte[] encrypted = null; 043 044 try { 045 cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); 046 047 encrypted = cipher.doFinal(padString(text).getBytes()); 048 } catch (Exception e) 049 { 050 throw new Exception("[encrypt] " + e.getMessage()); 051 } 052 053 return encrypted; 054 } 055 056 public byte[] decrypt(String code) throws Exception 057 { 058 if(code == null || code.length() == 0) 059 throw new Exception("Empty string"); 060 061 byte[] decrypted = null; 062 063 try { 064 cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); 065 066 decrypted = cipher.doFinal(hexToBytes(code)); 067 } catch (Exception e) 068 { 069 throw new Exception("[decrypt] " + e.getMessage()); 070 } 071 return decrypted; 072 } 073 074 075 076 public static String bytesToHex(byte[] data) 077 { 078 if (data=http://www.mamicode.com/=null) 079 { 080 return null; 081 } 082 083 int len = data.length; 084 String str = ""; 085 for (int i=0; i<len; i++) { 086 if ((data[i]&0xFF)<16) 087 str = str + "0" + java.lang.Integer.toHexString(data[i]&0xFF); 088 else 089 str = str + java.lang.Integer.toHexString(data[i]&0xFF); 090 } 091 return str; 092 } 093 094 095 public static byte[] hexToBytes(String str) { 096 if (str==null) { 097 return null; 098 } else if (str.length() < 2) { 099 return null; 100 } else { 101 int len = str.length() / 2; 102 byte[] buffer = new byte[len]; 103 for (int i=0; i<len; i++) { 104 buffer[i] = (byte) Integer.parseInt(str.substring(i*2,i*2+2),16); 105 } 106 return buffer; 107 } 108 } 109 110 111 112 private static String padString(String source) 113 { 114 char paddingChar = ‘ ‘; 115 int size = 16; 116 int x = source.length() % size; 117 int padLength = size - x; 118 119 for (int i = 0; i < padLength; i++) 120 { 121 source += paddingChar; 122 } 123 124 return source; 125 } 126 } [代码] mcrypt.php 01 /**********/ 02 /**PHP**/ 03 04 <?php 05 06 class MCrypt 07 { 08 private $iv = ‘fedcba9876543210‘; #Same as in JAVA 09 private $key = ‘0123456789abcdef‘; #Same as in JAVA 10 11 12 function __construct() 13 { 14 } 15 16 function encrypt($str) { 17 18 //$key = $this->hex2bin($key); 19 $iv = $this->iv; 20 21 $td = mcrypt_module_open(‘rijndael-128‘, ‘‘, ‘cbc‘, $iv); 22 23 mcrypt_generic_init($td, $this->key, $iv); 24 $encrypted = mcrypt_generic($td, $str); 25 26 mcrypt_generic_deinit($td); 27 mcrypt_module_close($td); 28 29 return bin2hex($encrypted); 30 } 31 32 function decrypt($code) { 33 //$key = $this->hex2bin($key); 34 $code = $this->hex2bin($code); 35 $iv = $this->iv; 36 37 $td = mcrypt_module_open(‘rijndael-128‘, ‘‘, ‘cbc‘, $iv); 38 39 mcrypt_generic_init($td, $this->key, $iv); 40 $decrypted = mdecrypt_generic($td, $code); 41 42 mcrypt_generic_deinit($td); 43 mcrypt_module_close($td); 44 45 return utf8_encode(trim($decrypted)); 46 } 47 48 protected function hex2bin($hexdata) { 49 $bindata = http://www.mamicode.com/‘‘; 50 51 for ($i = 0; $i < strlen($hexdata); $i += 2) { 52 $bindata .= chr(hexdec(substr($hexdata, $i, 2))); 53 } 54 55 return $bindata; 56 } 57 58 } 59 // see http://androidsnippets.com/encrypt-decrypt-between-android-and-php
<iframe id="google_ads_frame2" vspace="0" height="250" marginHeight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3447371224873639&output=html&h=250&slotname=8660799060&adk=1970350646&w=300&lmt=1399550543&flash=0&url=http%3A%2F%2Fwww.cnblogs.com%2Fxiaochao1234%2Fp%2F3716041.html&dt=1399550544448&shv=r20140501&cbv=r20140417&saldr=sb&prev_slotnames=4356862740&correlator=1399550544369&frm=20&ga_vid=429972749.1397695120&ga_sid=1399544814&ga_hid=91097986&ga_fc=1&u_tz=480&u_his=179&u_java=1&u_h=768&u_w=1364&u_ah=740&u_aw=1364&u_cd=16&u_nplug=0&u_nmime=0&dff=verdana&dfs=16&adx=0&ady=4380&biw=314&bih=74&eid=317150304&oid=3&rx=0&eae=0&docm=9&vis=0&fu=0&ifi=2&xpc=pFXaBUf8wy&p=http%3A//www.cnblogs.com&dtd=46" frameBorder="0" width="300" allowTransparency="true" name="google_ads_frame2" marginWidth="0" scrolling="no" hspace="0"></iframe><iframe id="google_ads_frame3" vspace="0" height="250" marginHeight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3447371224873639&output=html&h=250&slotname=8660799060&adk=1970350646&w=300&lmt=1399550543&flash=0&url=http%3A%2F%2Fwww.cnblogs.com%2Fxiaochao1234%2Fp%2F3716041.html&dt=1399550544564&shv=r20140501&cbv=r20140417&saldr=sb&prev_slotnames=4356862740%2C8660799060&correlator=1399550544369&frm=20&ga_vid=429972749.1397695120&ga_sid=1399544814&ga_hid=91097986&ga_fc=1&u_tz=480&u_his=179&u_java=1&u_h=768&u_w=1364&u_ah=740&u_aw=1364&u_cd=16&u_nplug=0&u_nmime=0&dff=verdana&dfs=16&adx=306&ady=4630&biw=314&bih=74&eid=317150304&oid=3&rx=0&eae=0&docm=9&vis=0&fu=0&ifi=3&xpc=FhLLaDYTfo&p=http%3A//www.cnblogs.com&dtd=45" frameBorder="0" width="300" allowTransparency="true" name="google_ads_frame3" marginWidth="0" scrolling="no" hspace="0"></iframe>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。