时时商务社区
标题:
兼容PHP和Java的des加密解密代码分享
[打印本页]
作者:
bewin83
时间:
2018-2-14 05:56
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 ( $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
您可能感兴趣的文章:
java易懂易用的MD5加密(可直接运行) (1)
java 易懂易用的MD5加密(可直接运行)(2)
java实现MD5加密算法的实例代码
des加密解密JAVA与.NET互通实例
java使用des加密解密示例分享
使用java自带des加密算法实现文件加密和字符串加密
java实现md5加密示例
java常用工具类之DES和Base64加密解密类
基于Java实现的Base64加密、解密原理代码
Apache Commons DbUtils工具包使用介绍
Java生成MD5加密字符串代码实例
分享Java常用几种加密算法(四种)
java自带的MessageDigest实现文本的md5加密算法
Apache Commons fileUpload实现文件上传之一
Java实现MD5加密及解密的代码实例分享
java实现的AES加密算法完整实例
Apache Commons fileUpload文件上传多个示例分享
Apache commons fileupload文件上传实例讲解
java利用Apache commons codec进行MD5加密,BASE64加密解密,执行系统命令
欢迎光临 时时商务社区 (http://bbs.4435.cn/)
Powered by Discuz! X3.2