栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP + Android XML加密/解密

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP + Android XML加密/解密

以下代码可能会对您有所帮助。使用此工具,您可以在PHP和Android之间加密/解密字符串。

Java部分:

import java.security.NoSuchAlgorithmException;import javax.crypto.Cipher;import javax.crypto.NoSuchPaddingException;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;public class MCrypt {    private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!)    private IvParameterSpec ivspec;    private SecretKeySpec keyspec;    private Cipher cipher;    private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!)    public MCrypt()    {        ivspec = new IvParameterSpec(iv.getBytes());        keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES");        try { cipher = Cipher.getInstance("AES/CBC/NoPadding");        } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace();        } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace();        }    }    public byte[] encrypt(String text) throws Exception    {        if(text == null || text.length() == 0) throw new Exception("Empty string");        byte[] encrypted = null;        try { cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); encrypted = cipher.doFinal(padString(text).getBytes());        } catch (Exception e)        { throw new Exception("[encrypt] " + e.getMessage());        }        return encrypted;    }    public byte[] decrypt(String pre) throws Exception    {        if(pre == null || pre.length() == 0) throw new Exception("Empty string");        byte[] decrypted = null;        try { cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); decrypted = cipher.doFinal(hexToBytes(pre));        } catch (Exception e)        { throw new Exception("[decrypt] " + e.getMessage());        }        return decrypted;    }    public static String bytesToHex(byte[] data)    {        if (data==null)        { return null;        }        int len = data.length;        String str = "";        for (int i=0; i<len; i++) { if ((data[i]&0xFF)<16)     str = str + "0" + java.lang.Integer.toHexString(data[i]&0xFF); else     str = str + java.lang.Integer.toHexString(data[i]&0xFF);        }        return str;    }    public static byte[] hexToBytes(String str) {        if (str==null) { return null;        } else if (str.length() < 2) { return null;        } else { int len = str.length() / 2; byte[] buffer = new byte[len]; for (int i=0; i<len; i++) {     buffer[i] = (byte) Integer.parseInt(str.substring(i*2,i*2+2),16); } return buffer;        }    }    private static String padString(String source)    {      char paddingChar = ' ';      int size = 16;      int x = source.length() % size;      int padLength = size - x;      for (int i = 0; i < padLength; i++)      {          source += paddingChar;      }      return source;    }}

PHP部分:

<?phpclass MCrypt{    private $iv = 'fedcba9876543210'; #Same as in JAVA    private $key = '0123456789abcdef'; #Same as in JAVA    function __construct()    {    }    function encrypt($str) {      //$key = $this->hex2bin($key);          $iv = $this->iv;      $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);      mcrypt_generic_init($td, $this->key, $iv);      $encrypted = mcrypt_generic($td, $str);      mcrypt_generic_deinit($td);      mcrypt_module_close($td);      return bin2hex($encrypted);    }    function decrypt($pre) {      //$key = $this->hex2bin($key);      $pre = $this->hex2bin($pre);      $iv = $this->iv;      $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);      mcrypt_generic_init($td, $this->key, $iv);      $decrypted = mdecrypt_generic($td, $pre);      mcrypt_generic_deinit($td);      mcrypt_module_close($td);      return utf8_enpre(trim($decrypted));    }    protected function hex2bin($hexdata) {      $bindata = '';      for ($i = 0; $i < strlen($hexdata); $i += 2) {        $bindata .= chr(hexdec(substr($hexdata, $i, 2)));      }      return $bindata;    }}

用法(Java):

mcrypt = new MCrypt();String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("Text to Encrypt") );String decrypted = new String( mcrypt.decrypt( encrypted ) );

用法(PHP):

$mcrypt = new MCrypt();#Encrypt$encrypted = $mcrypt->encrypt("Text to encrypt");#Decrypt$decrypted = $mcrypt->decrypt($encrypted);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号