欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 日常开放中 平台中通常不会只有单一的环境,因此跨平台的通讯 通常会使用标准的AES,DES等加密规则 公司的项目开发中 遇到了JAVA和PHP的加密解密跨平台的问题 经过多方查找资料以及研究找出一个通用的
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
日常开放中 平台中通常不会只有单一的环境,因此跨平台的通讯 通常会使用标准的AES,DES等加密规则
公司的项目开发中 遇到了JAVA和PHP的加密解密跨平台的问题 经过多方查找资料以及研究找出一个通用的基础加解密方案如下
1:JAVA代码 (3DES版)
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.log4j.Logger;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* Java版3DES加密解密,适用于PHP版3DES加密解密(PHP语言开发的MCRYPT_3DES算法、MCRYPT_MODE_ECB模式、PKCS7填充方式)
* @author G007N
*/
public class DesBase64Tool {
private static SecretKey secretKey = null;//key对象
private static Cipher cipher = null; //私?加密对象Cipher
private static String keyString = "AKlMU89D3FchIkhKyMma6FiE";//密钥
private static Logger log = Logger.getRootLogger();
static{
try {
secretKey = new SecretKeySpec(keyString.getBytes(), "DESede");//获得密钥
/*获得一个私?加密类Cipher,DESede是算法,ECB是加密模式,PKCS5Padding是填充方式*/
cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
/**
* 加密
* @param message
* @return
*/
public static String desEncrypt(String message) {
String result = ""; //DES加密字符串
String newResult = "";//去掉换行符后的加密字符串
try {
cipher.init(Cipher.ENCRYPT_MODE, secretKey); //设置工作模式为加密模式,给出密钥
byte[] resultBytes = cipher.doFinal(message.getBytes("UTF-8")); //正式执行加密操作
BASE64Encoder enc = new BASE64Encoder();
result = enc.encode(resultBytes);//进行BASE64编码
newResult = filter(result); //去掉加密串中的换行符
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return newResult;
}
/**
* 解密
* @param message
* @return
* @throws Exception
*/
public static String desDecrypt(String message) throws Exception {
String result = "";
try {
BASE64Decoder dec = new BASE64Decoder();
byte[] messageBytes = dec.decodeBuffer(message); //进行BASE64编码
cipher.init(Cipher.DECRYPT_MODE, secretKey); //设置工作模式为解密模式,给出密钥
byte[] resultBytes = cipher.doFinal(messageBytes);//正式执行解密操作
result = new String(resultBytes,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 去掉加密字符串换行符
* @param str
* @return
*/
public static String filter(String str) {
String output = "";
StringBuffer sb = new StringBuffer();
for (int i = 0; i
int asc = str.charAt(i);
if (asc != 10 && asc != 13) {
sb.append(str.subSequence(i, i+1));
}
}
output = new String(sb);
return output;
}
/**
* 加密解密测试
* @param args
*/
public static void main(String[] args) {
try {
String strText = "Hello world!";
String deseResult = desEncrypt(strText);//加密
System.out.println("加密结果:"+deseResult);
String desdResult = desDecrypt(deseResult);//解密
System.out.println("解密结果:"+desdResult);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[1] [2] [3]

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Dreamweaver Mac版
Alat pembangunan web visual