有哪些兼容PHP和Java的des加密解密代码
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"有哪些兼容PHP和Java的des加密解密代码",在日常操作中,相信很多人在有哪些兼容PHP和Java的des加密解密代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2026年11月01日有哪些兼容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安全错误
数据库的锁怎样保障安全
有格互联网科技
互联网科技工作委员会主任
北京路客互联网科技有限公司
高科技互联网
国智互联网科技
科技互联网龙头
互联网科技logo
长亮科技互联网金融
新华互联网科技校企合作
互联网科技创新企业排名
北京三清互联网科技
港股科技和互联网
电子科技大学互联网创业大赛
河南住房之家互联网科技
高科技互联网发展前景如何
上海钢联属于互联网科技股吗
互联网科技实习生岗位
上海互联网科技公司ppt
互联网科技职业技能培训学校
第三届互联网大会安防黑科技
互联网科技网
互联网科技卖菜
互联网科技英文
云创客互联网科技公司
互联网科技教育视频
佛山市拉法互联网科技有限公司
2021互联网科技公司排名
深圳互联网科技的发展
互联网领先科技宣传片
青岛互联网科技园