google后找到这个作者的一篇博客,搬过来用

http://hersface.com/page/17.html

  1. <?php
  2. class DESede{
  3. /**
  4. * 加密
  5. * @param $data 待加密明文
  6. * @param $key DES私钥
  7. * @param $use3des 是否启用3DES加密,默认不启用
  8. */
  9. function encrypt($data='', $key='', $use3des = False)
  10. {
  11. if (empty($data) || empty($key))
  12. {
  13. return False;
  14. }
  15. $cipher = $use3des ? MCRYPT_TRIPLEDES : MCRYPT_DES;
  16. $modes = MCRYPT_MODE_ECB;
  17. # Add PKCS7 padding.
  18. $block = mcrypt_get_block_size($cipher, $modes);
  19. $pad = $block - (strlen($data) % $block);
  20. $data .= str_repeat(chr($pad), $pad);
  21. $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher, $modes), MCRYPT_RAND);
  22. $encrypted = @mcrypt_encrypt($cipher, $key, $data, $modes, $iv);
  23. return $encrypted;
  24. }
  25. /**
  26. * 解密
  27. * @param $data 待解密密文
  28. * @param $key DES私钥
  29. * @param $use3des 是否启用3DES加密,默认不启用
  30. */
  31. function decrypt($data='', $key='', $use3des = False)
  32. {
  33. if (empty($data) || empty($key))
  34. {
  35. return False;
  36. }
  37. $cipher = $use3des ? MCRYPT_TRIPLEDES : MCRYPT_DES;
  38. $modes = MCRYPT_MODE_ECB;
  39. $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher, $modes), MCRYPT_RAND);
  40. $data = @mcrypt_decrypt($cipher, $key, $data, $modes, $iv);
  41. # Strip padding out.
  42. $block = mcrypt_get_block_size($cipher, $modes);
  43. $pad = ord($data[($len = strlen($data)) - 1]);
  44. $decrypted = substr($data, 0, strlen($data) - $pad);
  45. return $decrypted;
  46. }
  47. }
  48. $des=new DESede();
  49.  
  50. $rs=$des->encrypt('中国人','1',true);
  51. echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8">';
  52. echo base64_encode($rs);

最近项目和java对接,涉及到java的DESede加解密算法的更多相关文章

  1. java实现根据特定密钥对字符串进行加解密功能

    在项目中我们经常遇到这样的场景,我们避免重要资源泄露需要将一些信息按照特定的方式(密钥)进行加密保存,然后在使用的时候再按照特定的方式(密钥)进行解密读取,以保证信息的相对安全.那么如何对信息进行加解 ...

  2. Java实验五报告——TCP传输及加解密

    一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者D ...

  3. Java、C#双语版配套AES加解密示例

      这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...

  4. Java使用数字证书加密通信(加解密/加签验签)

    本文中使用的Base64Utils.java可参考:http://www.cnblogs.com/shindo/p/6346618.html 证书制作方法可参考:http://www.cnblogs. ...

  5. 转载:Java、C#双语版配套AES加解密示例

    转载,原文出处 http://www.cnblogs.com/lzrabbit/p/3639503.html 这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己 ...

  6. Java 加解密算法

    目前加密算法中分两种 一种是对称加密,一种是非对称加密 那么什么是对称加密呢?对称加密可以理解为加密和解密用的是一个钥匙. 而非对称加密,加锁用的是一个钥匙,而解锁用的是另外一个钥匙. 目前市面上用的 ...

  7. java 根据秘钥,对数据进行加解密

    package test; import com.alibaba.fastjson.JSONObject; import sun.misc.BASE64Decoder; import sun.misc ...

  8. java加解密算法

    什么是加密算法?百度百科给出的解释如下: 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容, ...

  9. java加解密算法--DES

    ECB import sun.misc.BASE64Decoder; import javax.crypto.*; import javax.crypto.spec.DESKeySpec; impor ...

随机推荐

  1. windows使用pip安装selenium报错问题

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xb9 in position 7: ordinal not in range(128) 这是 ...

  2. 优先队列PriorityQueue实现 大小根堆 解决top k 问题

    转载:https://www.cnblogs.com/lifegoesonitself/p/3391741.html PriorityQueue是从JDK1.5开始提供的新的数据结构接口,它是一种基于 ...

  3. C++:override和final

    1. override 重载 当你在父类中使用了虚函数时候,你可能需要在某个子类中对这个虚函数进行重写,以下方法都可以: class A { virtual void foo(); } class B ...

  4. js中字符串与数组的相互转换

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 【sql】使用触发器

    今天在写sql触发器时遇到这样一个问题: 利用完整性规则创建教师表,包括(教师工号,姓名,性别,职称,工资),在此基础上定义触发器,为教师表Teacher定义完整性规则“教授的工资不能低于4000元, ...

  6. Webstorm常用快捷键大全

    webstorm应该是目前最强的js编辑器了,结合sublime text可以很效率的开发项目.今天整理了一些webstorm比较实用的快捷键: Ctrl+/ 或 Ctrl+Shift+/ 注释(// ...

  7. qml 源码样例

    https://github.com/CodeBees/qtExample https://github.com/zhengtianzuo/QtQuickExamples/blob/master/RE ...

  8. Python IDLE 的使用与调试

    Python IDLE 是Python 安装包自带的集成开发环境.IDLE集成了Python 解释器.编辑器与调试器.适用于初学者了解Python 语法知识.1.使用 Python IDLE 编辑Py ...

  9. iOS GCD之dispatch_semaphore(信号量)

    前言 最近在看AFNetworking3.0源码时,注意到在 AFURLSessionManager.m 里面的 tasksForKeyPath: 方法 (L681),dispatch_semapho ...

  10. 【剑指offer12】矩阵中的路径(回朔法),C++实现

    1.题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中 ...