php blowfish 解密,PHP blowfish(CBC) 加密解密函数
1.[代码][PHP]代码
/**
* php blowfish 算法
* Class blowfish
*/
class blowfish
{
//key
private $key256 = '1234567890123456ABCDEFGHIJKLMNOP';
private $key128 = '1234567890123456';
//向量
public $iv = 0;
function __construct(){
$this->iv = substr($this->key256, 0, 16);
}
/**
* blowfish + cbc模式 + pkcs5补码 加密
* @param string $str 需要加密的数据
* @return string 加密后base64加密的数据
*/
public function blowfish_cbc_pkcs5_encrypt($str)
{
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
//pkcs5补码
$size = mcrypt_get_block_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
$str = $this->pkcs5_pad($str, $size);
if (mcrypt_generic_init($cipher, $this->key256, $this->iv) != -1)
{
$cipherText = mcrypt_generic($cipher, $str);
mcrypt_generic_deinit($cipher);
return base64_encode($cipherText);
}
mcrypt_module_close($cipher);
}
/**
* blowfish + cbc模式 + pkcs5 解密 去补码
* @param string $str 加密的数据
* @return string 解密的数据
*/
public function blowfish_cbc_pkcs5_decrypt($str)
{
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
if (mcrypt_generic_init($cipher, $this->key256, $this->iv) != -1)
{
$cipherText = mdecrypt_generic($cipher, base64_decode($str));
mcrypt_generic_deinit($cipher);
return $this->pkcs5_unpad($cipherText);
}
mcrypt_module_close($cipher);
}
private function pkcs5_pad($text, $blocksize){
$pad = $blocksize - (strlen ( $text ) % $blocksize);
return $text . str_repeat ( chr ( $pad ), $pad );
}
private function pkcs5_unpad($str){
$pad = ord($str[($len = strlen($str)) - 1]);
return substr($str, 0, strlen($str) - $pad);
}
}
php blowfish 解密,PHP blowfish(CBC) 加密解密函数相关推荐
- C#国密SM4 CBC加密解密
** C#国密SM4 CBC加密解密 在你得项目nuget引用程序集:KYSharp.SM 安装 2.0 版本,里面才有sm4的加密 ** static void Main(string[] args ...
- AES CBC 加密解密(偏移量)
参考文章:AES加密解密(ECB模式) 工具:在线AES加密解密 使用固定的key package com.eshore.cloud.utils;import android.text.TextUti ...
- AES CBC加密/解密
简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的D ...
- AES 128位CBC加密解密(不使用固定IV)
安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下: 1)分组密码算法:AES(密钥长度在128位及以上)(GCM或CBC模式) 2)流密码算法:AES(密钥长度在128位及以上)(OF ...
- java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释
Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...
- php aes解密中文,PHP AES加密解密算法
//--------第四种AES加密/解密方案 CBC模式,128-bit-------- /* * 实现AES加密 * $str : 要加密的字符串 * $keys : 加密密钥 * $iv : 加 ...
- java 第三方加解密库_开源加密解密库比较
第一个:OpenSSL C语言实现,整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的. 作为一个基于密码学的 ...
- python des解密_python实现DES加密解密方法实例详解
本文实例讲述了python实现DES加密解密方法.分享给大家供大家参考.具体分析如下: 实现功能:加密中文等字符串 密钥与明文可以不等长 这里只贴代码,加密过程可以自己百度,此处python代码没有优 ...
- 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...
最新文章
- 如何设置 Linux 上 SSH 登录的 Email 提醒
- 机器视觉图像采集卡的功能与应用
- MakeFile 文件的作用
- docker 安装mysql 实战文档_在docker上安装运行mysql实例
- 小区物业费信息管理系统设计c++_律师,我没有签物业合同,可以不交物业费吗?...
- jvm最大内存限制多少?
- Python第三方包-你了解numpy吗(numpy进阶)
- linux端口命令是什么意思,cmd和linux的查看端口命令是什么?
- 2014中国软件开发者调查
- 【回顾】推荐系统工程师技能树
- Java中成员变量、局部变量和静态变量的区别
- adb 命令大全(简洁明了)adb命令启动应用
- Axure简易计算器
- ssh:connect to host localhost port 22: Connection refused解决方法
- 16. Segmentation
- Lua基础教程与实践
- HTML5期末大作业:网页设计——小米商城官网首页(1页) HTML+CSS+JavaScript web期末作业设计网页_清新淡雅个人网页大学生网页设计作业成品
- 云原生和云计算的区别介绍
- Android N Preview Notification API (通知)
- 我的世界服务器显示伤害指令,我的世界怎么关闭队友伤害命令_我的世界怎么关闭队伤...