php 3des 兼容java,PHP版3DES加解密类,可与java的3DES(DESede)加密方式兼容
/**
*
* PHP版3DES加解密类
*
* 可与java的3DES(DESede)加密方式兼容
*
* @Author: Luo Hui (farmer.luo at gmail.com)
*
* @version: V0.1 2008.12.04
*
*/
class Crypt3Des
{
public $key = "01234567890123456789012345678912";
public $iv = "23456789"; //like java: private static byte[] myIV = { 50, 51, 52, 53, 54, 55, 56, 57 };
//加密
public function encrypt($input)
{
$input = $this->padding( $input );
$key = base64_decode($this->key);
$td = mcrypt_module_open( MCRYPT_3DES, ”, MCRYPT_MODE_CBC, ”);
//使用MCRYPT_3DES算法,cbc模式
mcrypt_generic_init($td, $key, $this->iv);
//初始处理
$data = mcrypt_generic($td, $input);
//加密
mcrypt_generic_deinit($td);
//结束
mcrypt_module_close($td);
$data = $this->removeBR(base64_encode($data));
return $data;
}
//解密
public function decrypt($encrypted)
{
$encrypted = base64_decode($encrypted);
$key = base64_decode($this->key);
$td = mcrypt_module_open( MCRYPT_3DES,”,MCRYPT_MODE_CBC,”);
//使用MCRYPT_3DES算法,cbc模式
mcrypt_generic_init($td, $key, $this->iv);
//初始处理
$decrypted = mdecrypt_generic($td, $encrypted);
//解密
mcrypt_generic_deinit($td);
//结束
mcrypt_module_close($td);
$decrypted = $this->removePadding($decrypted);
return $decrypted;
}
//填充密码,填充至8的倍数
public function padding( $str )
{
$len = 8 – strlen( $str ) % 8;
for ( $i = 0; $i < $len; $i++ )
{
$str .= chr( 0 );
}
return $str ;
}
//删除填充符
public function removePadding( $str )
{
$len = strlen( $str );
$newstr = "";
$str = str_split($str);
for ($i = 0; $i < $len; $i++ )
{
if ($str[$i] != chr( 0 ))
{
$newstr .= $str[$i];
}
}
return $newstr;
}
//删除回车和换行
public function removeBR( $str )
{
$len = strlen( $str );
$newstr = "";
$str = str_split($str);
for ($i = 0; $i < $len; $i++ )
{
if ($str[$i] != ‘n’ and $str[$i] != ‘r’)
{
$newstr .= $str[$i];
}
}
return $newstr;
}
}
//test
$input = "1qaz2ws";
echo "plainText:" . $input."
";
$crypt = new Crypt3Des();
echo "Encode:".$crypt->encrypt($input)."
";
echo "Decode:".$crypt->decrypt($crypt->encrypt($input));
?>
结果:
plainText:1qaz2ws
Encode:0GsXgYA8BuM=
Decode:1qaz2ws
php 3des 兼容java,PHP版3DES加解密类,可与java的3DES(DESede)加密方式兼容相关推荐
- 一个java的DES加解密类转换成C#
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util;import java.security.*; //im ...
- java实现对文件加解密操作
源文件: 加密后的文件: 解密后的文件: package com.gblfy.test;import java.io.*;/*** java 实现对文件加解密的方法** @author gblfy* ...
- Java反射-静态/动态加载类
title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...
- java实现国密加解密
1. pom依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-j ...
- SM2加密解决java与iOS端加解密不配套问题
SM2加密解决java与iOS端加解密不配套问题 问题描述 问题判定 代码 声明 问题描述 使用java开发的SM2加解密,由java层生成SM2公私钥,iOS.Android(因和java层一致,暂 ...
- 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)
微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java) 使用文章 http://blog.csdn.net/omsvip/article/details/39926493 提供的接入代码 ...
- JAVA实现PGP/GPG加解密
注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢! 一.加解密的准备资料 1.1 公钥 (用于加密) 1.2 私钥(用于解密) 1.3 私钥key (用于验证私钥) 导 ...
- Midori64 加解密的实现(Java代码)
根据论文Midori: A Block Cipher for Low Energy 我们通过Java实现了其加解密操作,想要了解midori算法的同学可以看我的另外一篇博文. (博文地址:https: ...
- aes加密php源码,AES加解密类源码 · ThinkPHP5高阶实战教程 --诠释为API开发而生 · 看云...
# AES加解密类源码 > 根据网络整理 ~~~ /** * Created by PhpStorm. * Power by Mikkle * QQ:776329498 * Date: 2017 ...
最新文章
- 数据结构与算法常用名词术语整理
- 如何分辨Web前端培训机构的好坏
- Science | 化学合成文献数字化自动执行通用系统
- 中小型研发团队架构实践三要点--转
- abap视图字段限制_MM03物料主数据视图中某些视图或者某些字段的控制方法 | 学步园...
- 浅谈面向对象思想下的 C 语言
- ftl转PDF服务器上中文不显示,解决Linux中swftools转换中文pdf时出现乱码问题
- 收藏网站制作常用经典css.div.布局.设计实例打包下载
- 魔乐手机管家V2.0内测版惊艳亮相--Android软件
- 入云!离开张一鸣的字节,做出了第一个重大决定
- 凸优化第六章逼近与拟合 6.3正则化逼近
- windows server 2003 下载
- python爬取新浪博客_python爬虫-韩寒新浪博客博文
- vs.Net 2003 安装
- 服装尺寸 html,服装尺寸S、M、L、XL、XXL分别表示的型号大小和释义(完整版)...
- pythonmsgbox怎么使用_详解MessageBox(),MsgBox函数的正确使用
- Logstash系列:发送邮件告警、发送POST告警
- c语言上机题库程序设计,c语言上机程序设计题库及答案.pdf
- linux bison 手册
- 需求评审会议如何召开
热门文章
- 计算机组成 指令扩展,计算机组成原理课程设计--指令扩展设计.doc
- 聚类结果不好怎么办_使用bert-serving生成词向量并聚类可视化
- Java黑皮书课后题第6章:*6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和。使用下面的方法头:public static int sumDigits(long n)
- java list加入listview_Android ListView自动生成列表条目的实例
- jmeter接口测试----9函数助手: random, counter, time
- shell脚本实例-判断主机存活 以及企业备份方案
- 使用Amazon Simple Queue Service(SQS) 实现简单的消息服务
- linux命令(8)wc
- Python 前端的第三方库
- 查看oracle数据库的连接数以及用户