Java与js完成des+3des加密 、解密

本文介绍了在Java中如何实现DES和3DES加密解密的方法,包括提供了一个DesUtil工具类的示例以及在Controller中的调用方式。对于3DES,仅提供了Java部分的代码,JS部分的实现需要自行查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

与移动端进行交换的时候经常遇到需要加密、解密的情况,最近在给移动端做接口,就研究了下加解密,把两种方式汇总一下:

1、des加密、解密

(1)des加解密工具类

DesUtil:

package com.loan.fore.util;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

/**
 * 
* <b>描述:</b> DES加解密
* <br><b>作者:</b> 
* <br><b>版本:</b>1.0
* <br><b>ProjectName:</b> loan-utils
* <br><b>PackageName:</b> com.loan.fore.util
* <br><b>ClassName:</b> DesUtil
* <br><b>Date:</b> 2017年8月3日 下午2:10:40
 */
public class DesUtil {

	private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
	public static final String KEY = "cf410f84";

	public static String encryptDES(String encryptString) throws Exception {
		IvParameterSpec zeroIv = new IvParameterSpec(iv);
		SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "DES");
		Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
		cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
		byte[] encryptedData = cipher.doFinal(encryptString.getBytes());
		return Base64.encode(encryptedData);
	}
	
	public static String decryptDES(String decryptString)
            throws Exception {
        byte[] byteMi = Base64.decode(decryptString);
        IvParameterSpec zeroIv = new IvParameterSpec(iv);
        SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "DES");
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
        byte decryptedData[] = cipher.doFinal(byteMi);

        return new String(decryptedData);
    }
	
	public static void main(String[] args) throws Exception {
		String encryptDES = encryptDES("abc");
		System.out.println(encryptDES);
		String decryptDES = decryptDES("MpWN08fvUgw=");
		System.out.println(decryptDES);
	}
}
/**
 * 
 */
package com.loan.fore.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;


/**
* <b>描述:</b>
* <br><b>作者:</b> 
* <br><b>版本:</b>1.0
* <br><b>ProjectName:</b> loan-utils
* <br><b>PackageName:</b> com.loan.fore.util
* <br><b>ClassName:</b> Base64
* <br><b>Date:</b> 2017年8月3日 下午5:44:10
*/
public class Base64 {

	 private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
	            .toCharArray();

	    /**
	     * data[]进行编码
	     * 
	     * @param data
	     * @return
	*/
	    public static String encode(byte[] data) {
	        int start = 0;
	        int len = data.length;
	        StringBuffer buf = new StringBuffer(data.length * 3 / 2);

	        int end = len - 3;
	        int i = start;
	        int n = 0;

	        while (i <= end) {
	            int d = ((((int) data[i]) & 0x0ff) << 16)
	                    | ((((int) data[i + 1]) & 0x0ff) << 8)
	                    | (((int) data[i + 2]) & 0x0ff);

	            buf.append(legalChars[(d >> 18) & 63]);
	            buf.append(legalChars[(d >> 12) & 63]);
	            buf.append(legalChars[(d >> 6) & 63]);
	            buf.append(legalChars[d 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值