侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

兼容PHP和Java的des加密解密代码分享

Java  /  管理员 发布于 5年前   422

php代码:

key = $key;if($iv == 0){$this->iv = $key;}else {$this->iv = $iv;}} //加密function encrypt($str){$size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );$str = $this->pkcs5Pad ( $str, $size ); $data=mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv);//$data=strtoupper(bin2hex($data)); //返回大写十六进制字符串return base64_encode($data);} //解密function decrypt($str){$str = base64_decode ($str);//$strBin = $this->hex2bin( strtolower($str));$str = mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_DECRYPT, $this->iv );$str = $this->pkcs5Unpad( $str );return $str;} function hex2bin($hexData){$binData = "";for($i = 0; $i < strlen ( $hexData ); $i += 2){$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 );}}$str = 'abcd';$key= 'asdfwef5';$crypt = new DES($key);$mstr = $crypt->encrypt($str);$str = $crypt->decrypt($mstr); echo $str.' <=> '.$mstr; ?>

java代码:

package com.test; import it.sauronsoftware.base64.Base64; import java.security.Key;import java.security.SecureRandom;import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec; public class Main{ public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding"; /**  * DES算法,加密  *  * @param data 待加密字符串  * @param key 加密私钥,长度不能够小于8位  * @return 加密后的字节数组,一般结合Base64编码使用  * @throws CryptException 异常  */ public static String encode(String key,String data) throws Exception {  return encode(key, data.getBytes()); } /**  * DES算法,加密  *  * @param data 待加密字符串  * @param key 加密私钥,长度不能够小于8位  * @return 加密后的字节数组,一般结合Base64编码使用  * @throws CryptException 异常  */ public static String encode(String key,byte[] data) throws Exception {  try  { DESKeySpec dks = new DESKeySpec(key.getBytes());  SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");   //key的长度不能够小于8位字节   Key secretKey = keyFactory.generateSecret(dks);   Cipher cipher = Cipher.getInstance(ALGORITHM_DES);   IvParameterSpec iv = new IvParameterSpec(key.getBytes());   AlgorithmParameterSpec paramSpec = iv;   cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec);    byte[] bytes = cipher.doFinal(data);  //   return byte2hex(bytes);   return new String(Base64.encode(bytes));  } catch (Exception e)  {   throw new Exception(e);  } }  /**  * DES算法,解密  *  * @param data 待解密字符串  * @param key 解密私钥,长度不能够小于8位  * @return 解密后的字节数组  * @throws Exception 异常  */ public static byte[] decode(String key,byte[] data) throws Exception {  try  {  SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");   //key的长度不能够小于8位字节   Key secretKey = keyFactory.generateSecret(dks);   Cipher cipher = Cipher.getInstance(ALGORITHM_DES);   IvParameterSpec iv = new IvParameterSpec(key.getBytes());   AlgorithmParameterSpec paramSpec = iv;   cipher.init(Cipher.DECRYPT_MODE, secretKey,paramSpec);   return cipher.doFinal(data);  } catch (Exception e)  {   throw new Exception(e);  } }  /**  * 获取编码后的值  * @param key  * @param data  * @return  * @throws Exception  */ public static String decodeValue(String key,String data)  { byte[] datas; String value = null;try {  datas = decode(key, Base64.decode(data.getBytes())); value = new String(datas);} catch (Exception e) {value = "";} return value; }  public static void main(String[] args) throws Exception { System.out.println("明:abcd ;密:" + Main.encode("asdfwef5","abcd")); }}

PS:关于加密技术,本站还提供了如下加密工具供大家参考使用:

MD5在线加密工具:http://tools..net.cn/password/CreateMD5Password

Escape加密/解密工具:http://tools..net.cn/password/escapepwd

在线SHA1加密工具:http://tools..net.cn/password/sha1encode

短链(短网址)在线生成工具:http://tools..net.cn/password/dwzcreate

短链(短网址)在线还原工具:http://tools..net.cn/password/unshorturl

高强度密码生成器:http://tools..net.cn/password/CreateStrongPassword

您可能感兴趣的文章:

  • Java实现MD5加密及解密的代码实例分享
  • java常用工具类之DES和Base64加密解密类
  • java使用des加密解密示例分享
  • 基于Java实现的Base64加密、解密原理代码
  • des加密解密JAVA与.NET互通实例
  • Java使用AES加密和解密的实例详解
  • Java实现的AES256加密解密功能示例
  • Java实现文件的加密解密功能示例
  • java中常用工具类之字符串操作类和MD5加密解密类
  • java使用异或对文件进行加密解密


  • 上一条:
    PHP-Java-Bridge使用笔记
    下一条:
    PHP调用JAVA的WebService简单实例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客