首页 > 代码库 > 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]&amp;0xFF)&lt;16)
087                        str = str + "0" + java.lang.Integer.toHexString(data[i]&amp;0xFF);
088                    else
089                        str = str + java.lang.Integer.toHexString(data[i]&amp;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() &lt; 2) {
099                    return null;
100                } else {
101                    int len = str.length() / 2;
102                    byte[] buffer = new byte[len];
103                    for (int i=0; i&lt;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 &lt; padLength; i++)
120              {
121                  source += paddingChar;
122              }
123     
124              return source;
125            }
126        }
[代码] mcrypt.php
 
01    /**********/
02    /**PHP**/
03     
04    &lt;?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-&gt;iv;
20     
21          $td = mcrypt_module_open(‘rijndael-128‘, ‘‘, ‘cbc‘, $iv);
22     
23          mcrypt_generic_init($td, $this-&gt;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-&gt;hex2bin($key);
34          $code = $this-&gt;hex2bin($code);
35          $iv = $this-&gt;iv;
36     
37          $td = mcrypt_module_open(‘rijndael-128‘, ‘‘, ‘cbc‘, $iv);
38     
39          mcrypt_generic_init($td, $this-&gt;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 &lt; 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>