代码改变世界

前端js使用DES进行加密处理后端java对DES进行加密处理

2022-09-27 17:14  阿方技术圈  阅读(35)  评论(0)    收藏  举报

在实际的项目开发过程中为了系统的安全性考虑,往往会对登录进行安全处理,比如对用户名和密码进行加密处理,本篇文章简单的介绍并且实现了如何通过前端进行加密处理并且后端进行解密处理

一、前端js

   1、引入需要的cryptojs包

<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>

DES加密解密处理方法

//DES加密,私钥采用Base64
function encryptByDES(value, key){

if(value == ' ' ){

return  ' ';

}

var keyHex = CryptoJS.enc.Base64.parse(key);
var encrypted = CryptoJS.DES.encrypt(value, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}

var value = '123456';//需要加密的数据
var key = '12345678';//加密key
//加密
desMessage = encryptByDES(value, key);
console.log(desMessage);
二、后端java

package com.lhf;

import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;

import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;

public class DESUtil {

private static final String defaultkey = "12345678";

private static Key key;

static {
try {
DESKeySpec keySpec = new DESKeySpec(Base64.decode(defaultkey));
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
key = secretKeyFactory.generateSecret(keySpec);
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (Base64DecodingException e) {
e.printStackTrace();
}catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (InvalidKeySpecException e) {
e.printStackTrace();
}
}

//对数据进行DES加密
public static String encryptData(String value){
SecureRandom random = new SecureRandom();
try {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE,key,random);
byte[] encryBytes = cipher.doFinal(value.getBytes("UTF-8"));
return new String(Base64.encode(encryBytes)).trim();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

//对数据进行解密
public static String decryptData(String value){
try{
SecureRandom random = new SecureRandom();
Cipher cipher = Cipher.getInstance("DES/ECB/Nopadding");
cipher.init(Cipher.DECRYPT_MODE,key,random);
byte[] decryptByte = cipher.doFinal(Base64.decode(value));
return new String(decryptByte,"UTF-8").trim();
}catch (Exception e){
throw new RuntimeException(e);
}

}
}