/**
* des 加密算法
*/ function do_mencrypt($input, $key) {
if (!function_exists("mcrypt_module_open")) {
throw_exception("请先安装mcrypt扩展");
exit();
}
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$input = pkcs5_pad($input, $size);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
} /**
* des解密算法
* @param unknown_type $input
* @param unknown_type $key
*/ function do_mdecrypt($str, $key) {
if (!function_exists("mcrypt_module_open")) {
throw_exception("请先安装mcrypt扩展");
exit();
}
$decrypted = mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
$key,
base64_decode($str),
MCRYPT_MODE_ECB
);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s - 1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
}

使用openssl加解密算法

<?php
class AES {
//AES-128-CBC 加密算法。openssl_get_cipher_methods() 可获取有效密码方式列表。
/**
* 参数说明:
* $data: 加密明文
* $method: 加密方法
* $passwd: 加密密钥
* $iv: 加密初始化向量(可选)
*/
public static function encrypt($string, $key, $iv)
{
$data = openssl_encrypt($string, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
$data = strtolower(bin2hex($data));
return $data;
}
/**
* 参数说明:
* $data: 解密密文
* $method: 解密加密方法
* $passwd: 解密密钥
* $iv: 解密初始化向量(可选)
*/
public static function decrypt($string, $key,$iv)
{
$decrypted = openssl_decrypt(hex2bin($string), 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv);
return $decrypted;
}
} //查询openssl支持的对称加密算法
// print_r(openssl_get_cipher_methods());
$string = '公众号:若水小站';
$encrypt = AES::encrypt($string,'WangZhaoBo123456','RuoShui123456789');
$decrypt = AES::decrypt($encrypt, 'WangZhaoBo123456','RuoShui123456789');
echo '加密后:'.$encrypt;//加密后:06441b13f69ddcf552286ac9bd2dcaf2e6bbbd8bddd92f459e18746a8841282e
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. 随机函数rand()和srand()

    C++中随机函数rand()和srand()的用法 一.rand() 函数名:   rand     功   能:   随机数发生器   用   法:   int rand(void); 所在头文件: ...

  2. [HTTP]Etag的工作流程

    1. 浏览器首次访问该资源时,web服务器返回资源的同时,响应报文头携带ETag标签: 2. 浏览器将保存该Etag标签的值: 3. 当浏览器发起下一次请求,请求报文头将会携带 If-None-Mat ...

  3. Mave------pom.xml标签详解

    pom文件作为MAVEN中重要的配置文件,对于它的配置是相当重要.文件中包含了开发者需遵循的规则.缺陷管理系统.组织.licenses.项目信息.项目依赖性等.下面将重点介绍一下该文件的基本组成与功能 ...

  4. Windows下Oracle 11g安装以及创建数据库

    安装数据库 事实上Oracle安装 1.安装准备 Oracle的安装包下载以后是两个压缩包,同时选中两个压缩包右击进行解压 2.解压完成如下图所示 3.双击 setup.exe 文件进行安装,会弹出以 ...

  5. Confluence 6 手动备份站点

    Confluence 被配置自动备份数据,使用压缩的 XML 格式.同时你也可以通过 Confluence 的 管理员控制台(Administration Console)手动进行备份. 你需要具有 ...

  6. Android “Command” from work summary

    总结一下Android中的命令. 一.adb 与 shell ADB的全称为Android Debug Bridge(调试桥).是一个适用命令行工具,用来与模拟器实例或链接的Android设备进行通信 ...

  7. bs4

  8. 【ssh】端口转发

    来源:https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/ 非常非常好用,可以通过跳板解决两台服务器无法连接的问题 第一部分 概述 ...

  9. bzoj 4007

    非常好的树形dp 首先,有个很显然的状态:记状态f[i][j]表示以i为根节点的子树中选了j个叶节点作战,那么很显然有转移:f[i][j1+j2]=f[i<<1][j1]+f[i<& ...

  10. CF919F

    题意: Alice和Bob玩游戏,每人各有8张牌,牌的大小在0~4之间 每次操作,先手可以选择自己一张牌和对方一张牌求和后%5,将新的牌替代自己拿出的那张牌,以此类推,直到有一个人手中的牌全部是0,则 ...