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) 加密解密函数相关推荐

  1. C#国密SM4 CBC加密解密

    ** C#国密SM4 CBC加密解密 在你得项目nuget引用程序集:KYSharp.SM 安装 2.0 版本,里面才有sm4的加密 ** static void Main(string[] args ...

  2. AES CBC 加密解密(偏移量)

    参考文章:AES加密解密(ECB模式) 工具:在线AES加密解密 使用固定的key package com.eshore.cloud.utils;import android.text.TextUti ...

  3. AES CBC加密/解密

    简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的D ...

  4. AES 128位CBC加密解密(不使用固定IV)

    安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下: 1)分组密码算法:AES(密钥长度在128位及以上)(GCM或CBC模式) 2)流密码算法:AES(密钥长度在128位及以上)(OF ...

  5. java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释

    Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...

  6. php aes解密中文,PHP AES加密解密算法

    //--------第四种AES加密/解密方案 CBC模式,128-bit-------- /* * 实现AES加密 * $str : 要加密的字符串 * $keys : 加密密钥 * $iv : 加 ...

  7. java 第三方加解密库_开源加密解密库比较

    第一个:OpenSSL C语言实现,整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的. 作为一个基于密码学的 ...

  8. python des解密_python实现DES加密解密方法实例详解

    本文实例讲述了python实现DES加密解密方法.分享给大家供大家参考.具体分析如下: 实现功能:加密中文等字符串 密钥与明文可以不等长 这里只贴代码,加密过程可以自己百度,此处python代码没有优 ...

  9. 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )

    文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...

最新文章

  1. 如何设置 Linux 上 SSH 登录的 Email 提醒
  2. 机器视觉图像采集卡的功能与应用
  3. MakeFile 文件的作用
  4. docker 安装mysql 实战文档_在docker上安装运行mysql实例
  5. 小区物业费信息管理系统设计c++_律师,我没有签物业合同,可以不交物业费吗?...
  6. jvm最大内存限制多少?
  7. Python第三方包-你了解numpy吗(numpy进阶)
  8. linux端口命令是什么意思,cmd和linux的查看端口命令是什么?
  9. 2014中国软件开发者调查
  10. 【回顾】推荐系统工程师技能树
  11. Java中成员变量、局部变量和静态变量的区别
  12. adb 命令大全(简洁明了)adb命令启动应用
  13. Axure简易计算器
  14. ssh:connect to host localhost port 22: Connection refused解决方法
  15. 16. Segmentation
  16. Lua基础教程与实践
  17. HTML5期末大作业:网页设计——小米商城官网首页(1页) HTML+CSS+JavaScript web期末作业设计网页_清新淡雅个人网页大学生网页设计作业成品
  18. 云原生和云计算的区别介绍
  19. Android N Preview Notification API (通知)
  20. 我的世界服务器显示伤害指令,我的世界怎么关闭队友伤害命令_我的世界怎么关闭队伤...

热门文章

  1. SpringMVC(2)
  2. nps内网穿透在Windows系统下的搭建
  3. Odoo14如何开启debug模式?
  4. 局域网下实现高清低延时图传(一)
  5. 无ldf文件附加mdf文件的做法
  6. ruoyi-vue-pro 开发指南 - myself
  7. 玉米社:外链、反链、内链、友链的区别与联系详解
  8. ZZULIOJ1011: 圆柱体表面积(python)
  9. 大学英语 综合教程 一到四 课文文章翻译 英译中 目录导航
  10. QFP、LQFP、TQFP、FQFP封装的区别