车皮 发表于 2015-8-24 09:51:41

android&php 加密解密

from://http://blog.iyunv.com/hecker385/article/details/6717647

android&php 加密解密

分类: Php Android2011-08-25 11:15 556人阅读 评论(2) 收藏 举报
android加密phplayoutexceptionstring
  MyCryptActivity.java
  



view plaincopyprint?

[*]package com.test.crypt;
[*]
[*]import android.app.Activity;
[*]import android.os.Bundle;
[*]import android.view.View;
[*]import android.view.View.OnClickListener;
[*]import android.widget.Button;
[*]import android.widget.EditText;
[*]
[*]public class MyCryptActivity extends Activity {
[*]    /** Called when the activity is first created. */
[*]    private EditText plainTextbefore, plaintextafter, ciphertext;
[*]    private Button button01;
[*]    private MCrypt mcrypt;
[*]    @Override
[*]    public void onCreate(Bundle savedInstanceState) {
[*]      super.onCreate(savedInstanceState);
[*]      setContentView(R.layout.main);
[*]         
[*]      plainTextbefore = (EditText)findViewById(R.id.EditText01);
[*]      ciphertext = (EditText)findViewById(R.id.EditText02);
[*]      plaintextafter = (EditText)findViewById(R.id.EditText03);
[*]      button01=(Button)findViewById(R.id.Button01);
[*]      plainTextbefore.setHint("请输入要加密的字符串");
[*]      button01.setOnClickListener(new OnClickListener() {
[*]            @Override
[*]            public void onClick(View v) {
[*]                // TODO Auto-generated method stub
[*]                String plainText = plainTextbefore.getText().toString();
[*]                mcrypt = new MCrypt();
[*]                try {
[*]                  String encrypted = MCrypt.bytesToHex( mcrypt.encrypt(plainText));
[*]                  String decrypted = new String( mcrypt.decrypt( encrypted ) );
[*]                  ciphertext.setText(encrypted);
[*]                  plaintextafter.setText(decrypted);
[*]                } catch (Exception e) {
[*]                  // TODO Auto-generated catch block
[*]                  e.printStackTrace();
[*]                }
[*]            }
[*]      });
[*]    }
[*]}
MCrypt.java  
  



view plaincopyprint?

[*]package com.test.crypt;
[*]
[*]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 = "0123456789123456";//
[*]    private IvParameterSpec ivspec;
[*]    private SecretKeySpec keyspec;
[*]    private Cipher cipher;
[*]      
[*]    private String SecretKey = "0123456789abcdef";//secretKey
[*]      
[*]    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(" " + e.getMessage());
[*]            }
[*]            
[*]            return encrypted;
[*]    }
[*]      
[*]    public byte[] decrypt(String code) throws Exception
[*]    {
[*]            if(code == null || code.length() == 0)
[*]                  throw new Exception("Empty string");
[*]            
[*]            byte[] decrypted = null;
[*]
[*]            try {
[*]                  cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);//<span style="font-family: Simsun;font-size:16px; ">用密钥和一组算法参数初始化此 Cipher。</span>
[*]                     
[*]                  decrypted = cipher.doFinal(hexToBytes(code));
[*]            } catch (Exception e)
[*]            {
[*]                  throw new Exception(" " + 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&0xFF)<16)
[*]                            str = str + "0" + java.lang.Integer.toHexString(data&0xFF);
[*]                  else
[*]                            str = str + java.lang.Integer.toHexString(data&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;
[*]                  for (int i=0; i<len; i++) {
[*]                            buffer = (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;
[*]    }
[*]}
  main.xml



view plaincopyprint?

[*]<?xml version="1.0" encoding="utf-8"?>
[*]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
[*]    android:orientation="vertical"
[*]    android:layout_width="fill_parent"
[*]    android:layout_height="fill_parent">
[*]      
[*]<TableLayout
[*]android:id="@+id/TableLayout01"
[*]android:layout_width="fill_parent"
[*]android:layout_height="wrap_content"
[*]android:collapseColumns="2"
[*]android:stretchColumns="1">
[*]    <TableRow
[*]    android:id="@+id/TableRow01"
[*]    android:layout_width="wrap_content"
[*]    android:layout_height="wrap_content">
[*]      <TextView   
[*]            android:layout_width="fill_parent"   
[*]            android:layout_height="wrap_content"   
[*]            android:text="明文:"></TextView>
[*]      <EditText
[*]            android:id="@+id/EditText01"
[*]            android:layout_width="wrap_content"
[*]            android:layout_height="wrap_content"></EditText>
[*]    </TableRow>   
[*]      
[*]    <TableRow
[*]    android:id="@+id/TableRow02"
[*]    android:layout_width="wrap_content"
[*]    android:layout_height="wrap_content">
[*]      <TextView   
[*]            android:layout_width="wrap_content"   
[*]            android:layout_height="wrap_content"   
[*]            android:text="密文:"></TextView>
[*]      <EditText
[*]            android:id="@+id/EditText02"
[*]            android:layout_width="wrap_content"
[*]            android:layout_height="wrap_content"></EditText>
[*]    </TableRow>
[*]    <TableRow
[*]    android:id="@+id/TableRow03"
[*]    android:layout_width="wrap_content"
[*]    android:layout_height="wrap_content">
[*]      <TextView   
[*]            android:layout_width="wrap_content"   
[*]            android:layout_height="wrap_content"   
[*]            android:text="明文:"></TextView>
[*]      <EditText
[*]            android:id="@+id/EditText03"
[*]            android:layout_width="wrap_content"
[*]            android:layout_height="wrap_content"></EditText>
[*]    </TableRow>
[*]</TableLayout>
[*]
[*]    <Button   
[*]      android:layout_width="fill_parent"   
[*]      android:layout_height="wrap_content"   
[*]      android:id="@+id/Button01"
[*]      android:text="显示密文,并解密"></Button>
[*]</LinearLayout>
  
  php:
  
  



view plaincopyprint?

[*]<?php   
[*]
[*]class 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($code) {
[*]          //$key = $this->hex2bin($key);
[*]          $code = $this->hex2bin($code);
[*]          $iv = $this->iv;
[*]
[*]          $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);
[*]
[*]          mcrypt_generic_init($td, $this->key, $iv);
[*]          $decrypted = mdecrypt_generic($td, $code);
[*]
[*]          mcrypt_generic_deinit($td);
[*]          mcrypt_module_close($td);
[*]
[*]          return utf8_encode(trim($decrypted));
[*]      }
[*]
[*]      protected function hex2bin($hexdata) {
[*]          $bindata = '';
[*]
[*]          for ($i = 0; $i < strlen($hexdata); $i += 2) {
[*]                $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
[*]          }
[*]
[*]          return $bindata;
[*]      }
[*]
[*]}
页: [1]
查看完整版本: android&php 加密解密