标签:/**

*

* DES FOR .NET版本

* @author Administrator

*

*/

class DES_NET{

var $key;

var $iv; //偏移量

function DES_NET( $key, $iv=0 ) {

//key长度8例如:1234abcd

$this->key = $key;

if( $iv == 0 ) {

$this->iv = $key; //默认以$key 作为 iv

} else {

$this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );

}

}

function encrypt($str) {

//加密,返回大写十六进制字符串

$size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );

$str = $this->pkcs5Pad ( $str, $size );

return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );

}

function decrypt($str) {

//解密

$strBin = $this->hex2bin( strtolower( $str ) );

$str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );

$str = $this->pkcs5Unpad( $str );

return $str;

}

function hex2bin($hexData) {

$binData = "";

for($i = 0; $i

$binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );

}

return $binData;

}

function pkcs5Pad($text, $blocksize) {

$pad = $blocksize - (strlen ( $text ) % $blocksize);

return $text . str_repeat ( chr ( $pad ), $pad );

}

function pkcs5Unpad($text) {

$pad = ord ( $text {strlen ( $text ) - 1} );

if ($pad > strlen ( $text ))

return false;

if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)

return false;

return substr ( $text, 0, - 1 * $pad );

}

}

/**

*

* DES JAVA版本

* @author Administrator

*

*/

class DES_JAVA{

var $key;

function DES_JAVA( $key ){

$this->key = $key;

}

function encrypt($encrypt) {

$encrypt = $this->pkcs5_pad($encrypt);

$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND);

$passcrypt = mcrypt_encrypt(MCRYPT_DES, $this->key, $encrypt, MCRYPT_MODE_ECB, $iv);

return strtoupper( bin2hex($passcrypt) );

}

function decrypt($decrypt) {

// $decoded = base64_decode($decrypt);

$decoded = pack("H*", $decrypt);

$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND);

$decrypted = mcrypt_decrypt(MCRYPT_DES, $this->key, $decoded, MCRYPT_MODE_ECB, $iv);

return $this->pkcs5_unpad($decrypted);

}

function pkcs5_unpad($text){

$pad = ord($text{strlen($text)-1});

if ($pad > strlen($text)) return $text;

if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text;

return substr($text, 0, -1 * $pad);

}

function pkcs5_pad($text){

$len = strlen($text);

$mod = $len % 8;

$pad = 8 - $mod;

return $text.str_repeat(chr($pad),$pad);

}

}

标签:

php des加密 和java胡同_PHP版本DES加密解(对应.net版与JAVA版)相关推荐

  1. Java 泛型(generics)详解及代码示例、Java 类型通配符详解及代码示例

    Java 泛型(generics)详解及代码示例.Java 类型通配符详解及代码示例 - 概念 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制 ...

  2. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. Java开发环境配置过程详解(包括IDEA配置Java)

    Java开发环境配置 一.JDK下载安装 1. 官网下载JDK 2. 本地安装JDK 3. 配置环境变量 4. 验证是否安装成功 二.IDEA进行Java开发 1. 创建Java项目 2. 程序测试 ...

  4. java获取vm运行参数_如何获取在Java中运行Java VM的版本?

    java获取vm运行参数 To get the version of running VM (Virtual Machine) in Java, we use the getProperties() ...

  5. Java 1.8 函数式编程详解

    Java 1.8 函数式编程详解 文章目录 Java 1.8 函数式编程详解 一. 概述 1.1 java 8 新特性: 二. 函数式接口 2.1 函数式接口概述 2.2 Lambda表达式概述 2. ...

  6. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  7. 消除冗长Java代码的工具——Lombok详解

    消除冗长Java代码的工具--Lombok详解 文章目录 消除冗长Java代码的工具--Lombok详解 什么是Lombok Lombok的作用 Lombok常用注解 Lombok安装 什么是Lomb ...

  8. java实现标准化考试系统详解(四)-----初始化操作实现

    (一)初始化操作实现 如上图所示当管理员需要更改适用工程.试题数量.考试时间时直接在文本中更改就好我们只需要每次在用户打开程序时初始化这些参数就可以 1.初始化试题模型,这里需要实现随机抽题,方法是用 ...

  9. Java虚拟机中类加载机制详解

    Java虚拟机中类加载机制详解 1,什么是java类加载机制 **首先在java中,是通过编译来生成.class文件(可能在本地,或者网页下载),java的类加载机制就是 将这些.class文件加载到 ...

最新文章

  1. 深入SecureFile—新一代LOB揭秘000
  2. ubuntu系统下创建软件桌面快捷方式
  3. hdu5399(找规律。。。)
  4. 编程能力强化(4)——模拟SQL语句解析
  5. php如何转类型,PHP数据类型转换
  6. eclipse常用设置及调试快捷键
  7. 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
  8. 内网通mac能用吗_Mac「随航」除了可以当Mac显示屏,还可以这样用
  9. 了解区块链(一)——加密货币以及区块链的价值
  10. 【火爆全网的抖音无人直播项目:挤地铁源代码】
  11. Unity 打包项目发红
  12. 大学生毕业后想成为产品经理?那你得先从以下几个方面入手!
  13. “机器学习实战”刻意练习1/8周
  14. mysql关键字释义_数据库连接字符串ConnectionString 中的关键字值释义
  15. php服务器环境配置
  16. Java中int的取值范围的原因
  17. MySQL中如何设置外键
  18. 十分钟搭建人脸识别小游戏
  19. 淘宝开网店的详细教程
  20. 给微信菜单添加表情图标

热门文章

  1. MEncoder 使用实例
  2. 有关Accordion组件的研究——Silverlight学习笔记[27]
  3. Socket和ServerSocket
  4. 计算机图画大赛作品六年级,打字能手显本领,电脑绘画展风采——记陆埠二小举行电脑绘画和电脑打字比赛...
  5. 交换机分布缓存_交换机网络嗅探方法 如何欺骗交换机缓存
  6. 深度学习之 SSD(Single Shot MultiBox Detector)
  7. 安装云端服务器操作系统,安装云端服务器操作系统
  8. android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...
  9. fish工具_Python程序员使用哪些开发工具
  10. tornado学习笔记day03-响应输出