java中的加密!

  例子、附一个可加密可解密类

  代码如下

  /**

  * AES加密、解密类

  * @author hushangming

  *

  * 用法:

  *

  * // 实例化类

  * // 参数$_bit:格式,支持256、192、128,默认为128字节的

  * // 参数$_type:加密/解密方式,支持cfb、cbc、nofb、ofb、stream、ecb,默认为ecb

  * // 参数$_key:密钥,默认为abcdefghijuklmno

  * $tcaes = new TCAES();

  * $string = 'laohu';

  * // 加密

  * $encodeString = $tcaes->encode($string);

  * // 解密

  * $decodeString = $tcaes->decode($encodeString);

  *

  */

  class TCAES{

  private $_bit = MCRYPT_RIJNDAEL_256;

  private $_type = MCRYPT_MODE_CBC;

  //private $_key = 'abcdefghijuklmno0123456789012345';

  private $_key = 'abcdefghijuklmno'; // 密钥

  private $_use_base64 = true;

  private $_iv_size = null;

  private $_iv = null;

  /**

  * @param string $_key 密钥

  * @param int $_bit 默认使用128字节

  * @param string $_type 加密解密方式

  * @param boolean $_use_base64 默认使用base64二次加密

  */

  public function __construct($_key = '', $_bit = 128, $_type = 'ecb', $_use_base64 = true){

  // 加密字节

  if(192 === $_bit){

  $this->_bit = MCRYPT_RIJNDAEL_192;

  }elseif(128 === $_bit){

  $this->_bit = MCRYPT_RIJNDAEL_128;

  }else{

  $this->_bit = MCRYPT_RIJNDAEL_256;

  }

  // 加密方法

  if('cfb' === $_type){

  $this->_type = MCRYPT_MODE_CFB;

  }elseif('cbc' === $_type){

  $this->_type = MCRYPT_MODE_CBC;

  }elseif('nofb' === $_type){

  $this->_type = MCRYPT_MODE_NOFB;

  }elseif('ofb' === $_type){

  $this->_type = MCRYPT_MODE_OFB;

  }elseif('stream' === $_type){

  $this->_type = MCRYPT_MODE_STREAM;

  }else{

  $this->_type = MCRYPT_MODE_ECB;

  }

  // 密钥

  if(!empty($_key)){

  $this->_key = $_key;

  }

  // 是否使用base64

  $this->_use_base64 = $_use_base64;

  $this->_iv_size = mcrypt_get_iv_size($this->_bit, $this->_type);

  $this->_iv = mcrypt_create_iv($this->_iv_size, MCRYPT_RAND);

  }

  /**

  * 加密

  * @param string $string 待加密字符串

  * @return string

  */

  public function encode($string){

  if(MCRYPT_MODE_ECB === $this->_type){

  $encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type);

  }else{

  $encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);

  }

  if($this->_use_base64)

  $encodeString = base64_encode($encodeString);

  return $encodeString;

  }

  /**

  * 解密

  * @param string $string 待解密字符串

  * @return string

  */

  public function decode($string){

  if($this->_use_base64)

  $string = base64_decode($string);

  $string = $this->toHexString($string);

  if(MCRYPT_MODE_ECB === $this->_type){

  $decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type);

  }else{

  $decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);

  }

  return $decodeString;

  }

  /**

  * 将$string转换成十六进制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值