php des加密:

$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表
$mode_list = mcrypt_list_modes();//mcrypt支持的加密模式列表// print_r($cipher_list);
// print_r($mode_list);function encrypt($key,$data){$td = mcrypt_module_open("des", "", "ecb", "");//使用MCRYPT_DES算法,ecb模式$size = mcrypt_enc_get_iv_size($td);       //设置初始向量的大小$iv = mcrypt_create_iv($size,MCRYPT_RAND); //创建初始向量$key_size = mcrypt_enc_get_key_size($td);       //返回所支持的最大的密钥长度(以字节计算)$salt = '';$subkey = substr(md5(md5($key).$salt), 0,$key_size);//对key复杂处理,并设置长度
mcrypt_generic_init($td, $subkey, $iv);$endata = mcrypt_generic($td, $data);mcrypt_generic_deinit($td);mcrypt_module_close($td);return $endata;
}function decrypt($key,$endata){$td = mcrypt_module_open("des", "", "ecb", "");//使用MCRYPT_DES算法,ecb模式$size = mcrypt_enc_get_iv_size($td);       //设置初始向量的大小$iv = mcrypt_create_iv($size,MCRYPT_RAND); //创建初始向量$key_size = mcrypt_enc_get_key_size($td);       //返回所支持的最大的密钥长度(以字节计算)$salt = '';$subkey = substr(md5(md5($key).$salt), 0,$key_size);//对key复杂处理,并设置长度mcrypt_generic_init($td, $subkey, $iv);$data = rtrim(mdecrypt_generic($td, $endata)).'\n';mcrypt_generic_deinit($td);mcrypt_module_close($td);return $data;
}$key = "www.tencent.com";
// $data = "返回所支持的最大的密钥长度(涉及到发件费啦";
$data = "dadfafdafd,我是一个好孩子";$endata =  encrypt($key,$data);$data1 = decrypt($key,$endata);echo $endata; //直接输出,在网页上是乱码,用base64_encode处理,就变成由字符、数组、加号、斜杠等共64种字符注册
echo base64_encode($endata);
echo $data1;

php所有的加密算法和模型:

//rijndael-128,rijndael-192,rijndael-256就是AES加密,3种分别是使用不同的数据块和密钥长度进行加密。Array
([0] => cast-128[1] => gost[2] => rijndael-128  [3] => twofish[4] => arcfour[5] => cast-256[6] => loki97[7] => rijndael-192[8] => saferplus[9] => wake[10] => blowfish-compat[11] => des[12] => rijndael-256[13] => serpent[14] => xtea[15] => blowfish[16] => enigma[17] => rc2[18] => tripledes
)
Array
([0] => cbc[1] => cfb[2] => ctr[3] => ecb[4] => ncfb[5] => nofb[6] => ofb[7] => stream
)

一般情况,用上面代码块即可,如果要求自己搞一个类,可以使用下面的类即可:

<?php /* * 类中,功能部分功能没有提炼,还需进一步修改*/
class Mymcrypt {public $key = "www.tence.com"; //必须是字符串了,如果是数字// 加密public function do_mencrypt($input){// $key = substr(md5($this->key), 0, 24);// $td = mcrypt_module_open('des', '', 'ecb', '');// $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_ECB, '');$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);//没有做key size设定$key_size = mcrypt_enc_get_key_size($td);       //返回所支持的最大的密钥长度(以字节计算)$salt = '';$subkey = substr(md5(md5($this->key).$salt), 0,$key_size);//对key复杂处理,并设置长度
mcrypt_generic_init($td, $subkey, $iv);$encrypted_data = mcrypt_generic($td, $input);mcrypt_generic_deinit($td);mcrypt_module_close($td);// return trim(chop($this->base64url_encode($encrypted_data)));return $encrypted_data;}// 解密//$input - stuff to decryptpublic function do_mdecrypt($input){// $key = substr(md5($this->key), 0, 24);// $td = mcrypt_module_open('des', '', 'ecb', '');// $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_ECB, '');$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);//没有做key size设定$key_size = mcrypt_enc_get_key_size($td); //返回支持的最大的密钥长度(以字节计)也可自己设定比如24$salt = '';$subkey = substr(md5(md5($this->key).$salt), 0,$key_size);////对key复杂处理,并设置长度
mcrypt_generic_init($td, $subkey, $iv);$decrypted_data = mdecrypt_generic($td, $input);mcrypt_generic_deinit($td);mcrypt_module_close($td);// return trim(chop($decrypted_data));return $decrypted_data;}// base64在url传递过程中需要注意的// 把base64加密后在url传输,会把“+“,”/”分别替换为”-”,”_”,以及会把末尾的等号“=”去掉。// 另外base64加密后的长度必然是4的倍数,所以可以根据这个还原“=”号function base64url_encode($data) {return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');// return $data;  //不处理会乱码// return base64_encode($data);
    }function base64url_decode($data) {return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));}} // 用法
$myMcrypt = new Mymcrypt();
$data = 'PD867H4V9J6B';
$value = $myMcrypt->do_mencrypt($data);
// $value = $myMcrypt->base64url_encode($value); //可以使用特殊处理过的base64_encode$value = base64_encode($value); //方便在网页显示
$value = trim($value);          //有时后面会带很多预定于字符串
echo "$value <br/> 长度:".strlen($value)."<br/>";$value = base64_decode($value); //解码后解密
$value = $myMcrypt->do_mdecrypt($value);
$value = trim($value);
echo "$value <br/>长度:".strlen($value)."<br/>";

相关链接:

https://segmentfault.com/a/1190000000668272  //php常见加密函数,总结的蛮好

http://www.cnblogs.com/hongfei/archive/2012/06/19/2555504.html  //前半部分对概念的解释很好

http://blog.csdn.net/zhang_red/article/details/39890539  //实际采用的例子

http://blog.csdn.net/tsxw24/article/details/7644244  //简洁版例子

转载于:https://www.cnblogs.com/zhongyuan/p/5642035.html

利用php的mcrypt模块加密解密(AES、DES等等)相关推荐

  1. [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用

    环境: 在ubuntu14.04下,记得安装:sudo pip3 install pycrypto 代码示例1: =========================== import base64 f ...

  2. php在线解密mcrypt,PHP 基于 Mcrypt 的加密解密简单类

    最近的一个项目项目中需要对 Cookie 加密,所以使用到了 Mcrypt 的方法进行加密解密的工作,于是我就整理成一个简单的类,以后直接简单调用类实现即可. Mcrypt 介绍 Mcrypt 是 P ...

  3. php mcrypt_rand,php基于mcrypt的加密解密实例

    本文实例讲述了php基于mcrypt实现加密解密的方法.分享给大家供大家参考.具体实现方法如下: PHP中自带了相当多的加密的方法,这里我们来看一下mcrypt扩展的使用方式.也是在工作中需要用这个东 ...

  4. C# 加密解密(DES,3DES,MD5,Base64) 类

    public sealed class EncryptUtils{#region Base64加密解密/// <summary>/// Base64加密/// </summary&g ...

  5. react实现RSA加密解密、DES加密

    前端实现RSA加密解密.DES解密,主要用到的包有jsencrypt.crypto-js 一.使用场景 需要在本地存储一些标志位,安全问题 用户登录密码的加密 二.加密代码 RSA加密 安装 npm ...

  6. 记录一个视频加密解密--AES 进阶版 (EVP)

    OpenSSL 是一个开源的软件库,提供了一组用于进行加密.解密.哈希和证书操作的函数和工具.其中,EVP(Envelope Cryptography API)是 OpenSSL 中的一个模块,用于处 ...

  7. 利用Python+OpenCV对图像加密/解密

    原文地址:利用Python.OpenCV对图像加密解密 | QuantumCloud蕴藏一个有趣.不难且实用的理论知识https://myblog.quantumcloud.top/2021/05/1 ...

  8. 利用Base64对文本进行加密解密操作

    有时候我们需要对数据进行加密解密,最常见的加密方法有MD5加密.Base64加密.而今天讲的是Base64加密解密方法,我们需要引用两个文件using System.Collections.Gener ...

  9. mcrypt php 加密解密,mcrypt启用 加密以及解密过程详细解析

    Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原. 1.PHP加密扩展库Mcrypt安装在标准的PHP安装过程中并没有把Mrcypt安装上,但PHP的主目录下包含了libmc ...

最新文章

  1. 图像工程CH4 频域图像增强
  2. 深度学习之循环神经网络(4)RNN层使用方法
  3. AT3857-[AGC020C]Median Sum【背包,bitset】
  4. pgpool-II 高可用搭建
  5. 逆波兰计算器android源码简书,汪都能理解的逆波兰计算器(C++实现)
  6. 腾讯云坚持“云+数据库”转型,看好多模数据库未来发展
  7. JavaScript中的数据类型和数据类型转换
  8. 如何在IOS上玩gba游戏(免越狱)
  9. android铃声总结
  10. 【Mockplus教程】安装Mockplus
  11. 期权、期货及其他衍生产品 第二章 课程笔记整理
  12. 计算机科学的刊物卷号,期刊的卷号和期号怎么看
  13. 戴尔服务器重装系统识别不到硬盘,戴尔台式机重装系统(戴尔台式机重装系统找不到硬盘)...
  14. vi 怎么 保存, 退出编辑
  15. 人脸识别闸机python_Python 40行代码实现人脸识别功能
  16. 明仔说机:目前电视盒子哪个最好?五大口碑电视盒子推荐
  17. WordPress网站搭建
  18. 苹果App Store公布最新应用审核标准
  19. Xilinx FPGA支持的SPI Flash配置芯片型号
  20. 在线客服 生成 代码

热门文章

  1. DevpTips【Macbook Pro】macbook操作
  2. Linux下安装unrar流程(附下载链接)
  3. php点击弹遮罩层,小程序:防止点击遮罩层后遮罩层下面也反应的解决方法
  4. linux下firefox日志,Linux下最新Firefox文件配置技巧
  5. 众多网页游戏源码素材一键即可获取
  6. 『总结』微信公众号开发相关问题
  7. 最新版浏览器报错net::ERR_INSECURE_RESPONSE原因
  8. EQ笔记1-什么叫均衡器-百度百科 转载
  9. chrome升级后LODOP打印插件无法使用
  10. 反射望远镜的发展历程(1)