1. /**
  2. * des 加密算法
  3. */
  4.  
  5. function do_mencrypt($input, $key) {
  6. if (!function_exists("mcrypt_module_open")) {
  7. throw_exception("请先安装mcrypt扩展");
  8. exit();
  9. }
  10. $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
  11. $input = pkcs5_pad($input, $size);
  12. $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
  13. $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
  14. mcrypt_generic_init($td, $key, $iv);
  15. $data = mcrypt_generic($td, $input);
  16. mcrypt_generic_deinit($td);
  17. mcrypt_module_close($td);
  18. $data = base64_encode($data);
  19. return $data;
  20. }
  21.  
  22. /**
  23. * des解密算法
  24. * @param unknown_type $input
  25. * @param unknown_type $key
  26. */
  27.  
  28. function do_mdecrypt($str, $key) {
  29. if (!function_exists("mcrypt_module_open")) {
  30. throw_exception("请先安装mcrypt扩展");
  31. exit();
  32. }
  33. $decrypted = mcrypt_decrypt(
  34. MCRYPT_RIJNDAEL_128,
  35. $key,
  36. base64_decode($str),
  37. MCRYPT_MODE_ECB
  38. );
  39. $dec_s = strlen($decrypted);
  40. $padding = ord($decrypted[$dec_s - 1]);
  41. $decrypted = substr($decrypted, 0, -$padding);
  42. return $decrypted;
  43. }

使用openssl加解密算法

  1. <?php
  2. class AES {
  3. //AES-128-CBC 加密算法。openssl_get_cipher_methods() 可获取有效密码方式列表。
  4. /**
  5. * 参数说明:
  6. * $data: 加密明文
  7. * $method: 加密方法
  8. * $passwd: 加密密钥
  9. * $iv: 加密初始化向量(可选)
  10. */
  11. public static function encrypt($string, $key, $iv)
  12. {
  13. $data = openssl_encrypt($string, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
  14. $data = strtolower(bin2hex($data));
  15. return $data;
  16. }
  17. /**
  18. * 参数说明:
  19. * $data: 解密密文
  20. * $method: 解密加密方法
  21. * $passwd: 解密密钥
  22. * $iv: 解密初始化向量(可选)
  23. */
  24. public static function decrypt($string, $key,$iv)
  25. {
  26. $decrypted = openssl_decrypt(hex2bin($string), 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv);
  27. return $decrypted;
  28. }
  29. }
  30.  
  31. //查询openssl支持的对称加密算法
  32. // print_r(openssl_get_cipher_methods());
  33. $string = '公众号:若水小站';
  34. $encrypt = AES::encrypt($string,'WangZhaoBo123456','RuoShui123456789');
  35. $decrypt = AES::decrypt($encrypt, 'WangZhaoBo123456','RuoShui123456789');
  36. echo '加密后:'.$encrypt;//加密后:06441b13f69ddcf552286ac9bd2dcaf2e6bbbd8bddd92f459e18746a8841282e
  37. echo '解密后:'.$decrypt;//解密后:公众号:若水小站

PHP加密解密方法,使用openssl加密解密的更多相关文章

  1. Java Des加解密方法(c#加密Java解密)

    最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...

  2. PHP 加密 和 解密 方法

    关于Discuz的加密解密函数,相信大家都有所了解,该authcode函数可以说是对PHP界作出了重大的贡献,真的发觉discuz这个函数写的太精彩啦. 研究了一下这个算法,总的来说可以归纳为以下三点 ...

  3. 备忘DES带向量的加密和解密与DES简单加密与解密

    package com.ego.util; import java.security.Key; import java.security.SecureRandom; import java.secur ...

  4. ASP.NET(C#)常用数据加密和解密方法汇总

    一.            数据加密的概念 1.  基本概念 2.  基本功能 3.  加密形式 二.            数据加密的项目应用和学习 1.  媒体加密:DRM 2.  文件加密:文本 ...

  5. php7实现基于openssl的加密解密方法

    还需要注意的是加密字符串长度问题,如果加密字符串长度太长需要进行分段加解密,如下代码: 加密:(公匙加密,私密一般用来解密) function encrypt($originalData){ $pub ...

  6. Linux下OpenSSL加密解密压缩文件(AES加密压缩文件)

    OpenSSL是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库.应用程序.SSL协议库.Openssl实现了SSL协议所需要的大多数算法.下面介绍使用Openssl进行文件的对称 ...

  7. vb.net加密解密方法

    1.vb.net加密解密方法 Private Function getLicenseDate() As String Dim b() As Byte Dim path As String = Serv ...

  8. C#中常用的字符串加密,解密方法封装,包含只加密,不解密的方法

    //方法一//须添加对System.Web的引用//using System.Web.Security;/// <summary>/// SHA1加密字符串/// </summary ...

  9. ASP.NET常用加密解密方法

    ASP.NET常用加密解密方法 一.MD5加密解密 1.加密 C# 代码           public static string ToMd5(string clearString)        ...

随机推荐

  1. Laravel 5.2控制器--为什么命令行创建控制器的时候会报错?

    今天我遇到过一种情况:就是之前创建的控制器名称想更改(仅仅只是大小写问题而已),然后用命令行重新创建新的名称的控制器. 结果就报错了? [ReflectionException] Class App\ ...

  2. 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控【转】

    概述 本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控. 引言 我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等 ...

  3. IP保留地址

    保留地址的网络只能在内部进行通信,而不能与其他网络互连.因为本网络中的保留地址同样也可能被其它网络使用,如果进行网络互连,那么寻找路由时就会因为地址的不唯一而出现问题. 但是这些使用保留地址的网络可以 ...

  4. 学了这么久,vue和微信小程序到底有什么样的区别?

    前言 写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别.相比之下,小程序的钩子函数要简单得多. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期   相比之下 ...

  5. Servet

    一.Servlet 是单例吗 不是. 1.你可以用多个 URL 映射同一个 Servlet.这样就会出现多个实例. 2.看看 Servlet 定义: 引用 For a servlet not host ...

  6. Jquery无刷新实时更新表格数据

    html代码: <style> .editbox { display:none } .editbox { font-size:14px; width:70px; background-co ...

  7. LeetCode(86):分隔链表

    Medium! 题目描述: 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: hea ...

  8. 【ES】学习12-近似聚合

    在数据操作中有三个考虑指标:大数据.精确性和实时性.三者难以同时满足. 精确 + 实时 数据可以存入单台机器的内存之中,我们可以随心所欲,使用任何想用的算法.结果会 100% 精确,响应会相对快速. ...

  9. numpy 与 pandas

    numpy: import numpy as np np.array([1,2,3]) 创建数组 np.arange(10).reshape(2,5) 类似于range(起始,终止,步长),可以加re ...

  10. node.js 的页面渲染方法ejs

    .安装依赖的组件 npm i consolidate -D npm i ejs -D 2.布局服务端 const express = require('express'); const consoli ...