有哪些兼容PHP和Java的des加密解密代码
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍"有哪些兼容PHP和Java的des加密解密代码",在日常操作中,相信很多人在有哪些兼容PHP和Java的des加密解密代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2025年11月07日有哪些兼容PHP和Java的des加密解密代码
这篇文章主要介绍"有哪些兼容PHP和Java的des加密解密代码",在日常操作中,相信很多人在有哪些兼容PHP和Java的des加密解密代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"有哪些兼容PHP和Java的des加密解密代码"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
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.jb51.net/password/CreateMD5Password
Escape加密/解密工具:http://tools.jb51.net/password/escapepwd
在线SHA1加密工具:http://tools.jb51.net/password/sha1encode
短链(短网址)在线生成工具:http://tools.jb51.net/password/dwzcreate
短链(短网址)在线还原工具:http://tools.jb51.net/password/unshorturl
高强度密码生成器:http://tools.jb51.net/password/CreateStrongPassword
到此,关于"有哪些兼容PHP和Java的des加密解密代码"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
加密
代码
工具
字节
长度
加密解密
字符
字符串
在线
学习
数组
算法
编码
更多
网址
帮助
生成
实用
接下来
十六进制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库中加入一条记录
上海公司进销存软件开发
某市网络安全工作计划
宁夏服务器维修多少钱
Amd cpu服务器
战地服务器地址
如何正确对待网络技术
数据库怎么修改联合主键
慈溪专业软件开发教程
软件开发方式方法
dns服务器 ipv6
奇妙小森林网络技术
四川互联网软件开发
计算机网络技术面试优点
先进数通 网络安全
东莞星荟网络技术
护苗网络安全课6
微信技术数据库
网络安全知识教育平台登录
什么模型强调分阶段软件开发
数据库正在还原解决办法
我国现有中外数据库多少个
宁波游戏软件开发创新服务
服务器的选型要考虑哪些问题
二手雷石服务器装备安全吗
广东c语言软件开发哪家好
语义网北京软件开发有限公司
知识产权网络安全共享
国网公司网络安全管理
超微服务器如何挂载镜像