如何实现 DES 加密,解密(uniapp/vue) + Java)

这篇具有很好参考价值的文章主要介绍了如何实现 DES 加密,解密(uniapp/vue) + Java)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 一、引言

二、 什么是DES?

 三、实际操作

 1. Uniapp 进行 des 加密/解密

 2. Java 进行 des 加密/解密


 一、引言

        现如今,加密是对数据安全处理的基本手段之一。今天我们的背景就是微信开发中,涉及到支付时用户个人信息的权限认证操作。今天使用的就是通过DES算法进行加密/解密,保证用户信息安全性。


二、 什么是DES?

        DES是一种对称性的密钥加密块算法,通过16轮的加密/解密,形成加密文档。因为加密和解密使用的是同一个密钥,所以在使用时要保证前后端密钥统一。

详细参考:什么是DES算法

 效果图:(此处效果为前端加密,后端解密的结果)

vue des加密,vue.js,javascript,java,uni-app,算法

vue des加密,vue.js,javascript,java,uni-app,算法


 三、实际操作

 1. Uniapp 进行 des 加密/解密

1. 首先,在终端编写 npm install crypto-js

//项目根目录会生成node_modules文件夹,里面有crypto-js就说明成功了

2. 其次,在存放js文件包下(我用的是config目录)编写des.js文件

3. 引入 des.js 文件中方法,调用方法

//这里 @ 表示相对路径,替代 src,@不能用于引入css文件路径

import { encryptDes, decryptDes } from '@/common/des.js'

详情参考:Uniapp实现 des 加密/解密

 des.js 文件

import CryptoJS from '../node_modules/crypto-js/crypto-js.js' 

// DES加密
export const encryptDes = (message, key) => {
    const keyHex = CryptoJS.enc.Utf8.parse(key);
    const encrypted = CryptoJS.DES.encrypt(message, keyHex, {
     mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
}

// DES解密
export const decryptDes = (ciphertext, key) => {
   const keyHex = CryptoJS.enc.Utf8.parse(key);
   // direct decrypt ciphertext
 const decrypted = CryptoJS.DES.decrypt({
  ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
 }, keyHex, {
  mode: CryptoJS.mode.ECB,
 padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}

test.vue 

const util = require("../../config/util.js") //引用 node.js 的 util 工具类
import {encryptDes, decryptDes} from '@/config/des.js' // 引用具体的方法
 
 methods:{
     test(){
         //拼接字符串
        let info = this.a + "," + this.b + "," +
this.c + "," + this.d;
    console.log("加密前:" + info);
    info = encryptDes(info, 'key')
    console.log("加密后信息为:" + info);
        //加密字符串信息
    util.request("http://localhost:8081/test", {test: info}, "POST").then(res => {});     
     } 
 }

 2. Java 进行 des 加密/解密

1. 引入 pom 依赖

<!-- spring security 安全认证 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. 编写 util 工具类

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import org.apache.commons.net.util.Base64;

public class DesUtils {
    /** 用于加密解密的同一把密钥 */
    public static final String ORIGNKEY = "key";

    /**
     * 加密算法
     */
    public static String desEncript(String clearText, String originKey) throws Exception
    {
        Cipher cipher= Cipher.getInstance("DES"); /*提供加密的方式:DES*/
        SecretKeySpec key=getKey(originKey);  /*对密钥进行操作,产生16个48位长的子密钥*/
        cipher.init(Cipher.ENCRYPT_MODE,key); /*初始化cipher,选定模式,这里为加密模式,并同时传入密钥*/
        byte[] doFinal=cipher.doFinal(clearText.getBytes());   /*开始加密操作*/
        String encode= Base64.encode(doFinal);    /*对加密后的数据按照Base64进行编码*/
        return encode;
    }

    /**
     * 解密算法
     */
    public static String desDecript(String cipherText, String originKey) throws Exception
    {
        Cipher cipher=Cipher.getInstance("DES");   /*初始化加密方式*/
        Key key=getKey(originKey);  /*获取密钥*/
        cipher.init(Cipher.DECRYPT_MODE,key);  /*初始化操作方式*/
        byte[] decode=Base64.decode(cipherText);  /*按照Base64解码*/
        byte[] doFinal=cipher.doFinal(decode);   /*执行解码操作*/
        return new String(doFinal);   /*转换成相应字符串并返回*/
    }

    /**
     * 获取密钥算法
     */
    public static SecretKeySpec getKey(String originKey)
    {
        byte[] buffer=new byte[8];
        byte[] originBytes=originKey.getBytes();
        /**
         * 防止输入的密钥长度超过64位
         */
        for(int i=0;i<8&&i<originBytes.length;i++)
        {
            buffer[i]=originBytes[i];  /*如果originBytes不足8,buffer剩余的补零*/
        }
        SecretKeySpec key=new SecretKeySpec(buffer,"DES"); /*第一个参数是密钥字节数组,第二个参数是加密方式*/
        return key;  /*返回操作之后得到的密钥*/
    }
}

3. 实现 Controller 方法文章来源地址https://www.toymoban.com/news/detail-764097.html

@PostMapping("/test")
//这里的 AjaxResult 和 toAjax 使用到了若依,可根据自身需要换掉
public AjaxResult test(String text) throws Exception {
    System.out.println("走到了 test 方法中,开始解密数据:" + text);
    //Des 解密文本,传输两个值,第一个是文本信息,第二个是密钥
    return toAjax(service.test(DesUtils.desDecript(text, DesUtils.ORIGNKEY)));
}

到了这里,关于如何实现 DES 加密,解密(uniapp/vue) + Java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DES的加密与解密(C语言实现)——大三密码学实验

    目录 DES的描述 Feistel体制 密钥扩展函数 F函数 总流程  代码 get函数的构建 yihuo函数的构建 fuck函数的构建 left_move函数的构建 exchange函数的构建 erzhuanshi函数的构建 shizhuaner函数的构建 s_box函数的构建 主函数的构建 总函数 运行结果示例 DES: 16 轮, Feistel 型结构 明文长度:

    2024年02月07日
    浏览(35)
  • DES的加密解密在ECB上的使用(C语言实现)——大三密码学实验

    目录 实验内容 实验原理 DES加密解密 ECB(电码本模式) 代码 DES函数的构建 RE_DES函数的构建 ECB函数的构建 RE_ECB的函数的构建 主函数的构建 总代码 测试结果 输入一个文本文件,通过ECB和DES进行加密,再将内容储存在新的文本文件中,再通过ECB和DES解密,将内容储存在新的文本

    2024年02月04日
    浏览(36)
  • AES与DES加密解密算法

    AES(Advanced Encryption Standard,高级加密标准)的出现,是因为以前使用的DES算法密钥长度较短,已经不适应当今数据加密安 全性的要求,因此2000年10月2日,美国政府宣布将比利时密码学家Joan Daemen和Vincent Rijmen提出的密码算法RIJNDAEL作为高级加密标准。2001年11月26日,美国政府

    2024年04月28日
    浏览(35)
  • Java 基于Hutool实现DES加解密

    = 文章篇幅过短,不允许发布,添加文字占位符,无其它含义 ====== = 文章篇幅过短,不允许发布,添加文字占位符,无其它含义 ====== = 文章篇幅过短,不允许发布,添加文字占位符,无其它含义 ====== = 文章篇幅过短,不允许发布,添加文字占位符,无其它含义 ====== = 文章篇

    2024年02月12日
    浏览(28)
  • C#集成数据加密算法,包含DES、RSA、Base64、SHA、MD5算法,轻松实现数据加密解密需求

    在需要使用配置文件的工控软件中,往往需要在配置文件和数据库中对一些数据加密,即对一串数据进行加密算法后输出复杂符号和字符的形式,让非相关人员无法识别原有数据,从而对数据或数据库进行相应的保护,这往往也是公司安全部门的基本要求。 网上写加密算法的

    2024年02月03日
    浏览(55)
  • DES加密解密 Feistel算法网络结构 详讲

    DES算法是属于对称密码算法中的分组加算法。 分组加密 和 流密码 加密是相对应的。 流密码 是逐字节进行加密,即一个字节一个字节进行加密 分组加密 算法也叫 块加密 ,将明文分成固定字节块,对每个字节块分别进行加密,最后拼接在一起得到密文 密钥长64位,56位参与运

    2024年02月16日
    浏览(28)
  • JAVA加密解密异常之java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/CBC/PKCS7

    AVA加密解密异常之java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/CBC/PKCS7Padding 网上最接近的解决办法: 最后解决办法: 1.在jdk中的jrelibsecurity修改java.security文件,替换security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider。 并将原有的#security.provider.7=com.sun.s

    2024年02月03日
    浏览(37)
  • 常见加密解密(DES、RSA)以及摘要算法MD5的介绍

    1.1-理解MD5 MD5公开的算法,任何语言实现后其实都是一样的、通用的 不可逆加密:原文——加密——密文,密文无法解密出原文 1.2-MD5封装 1.3-MD5总结 相同原文加密的结果是一样的 不同长度的内容加密后都是32位,可以自行改变长度 原文件改动差别很小,结果差别很大 不管文

    2024年02月14日
    浏览(77)
  • Java实现数据加密:掌握DES CBC和ECB两种模式

    DES算法是一种对称加密算法,它使用相同的密钥进行加密和解密。DES算法是一种分组密码,即将明文分成固定长度的块,并对每个块进行加密。DES算法将每个64位的明文块分成两个32位的半块,然后进行一系列的加密和解密操作,最终得到一个64位的密文块。 CBC(Cipher Block C

    2023年04月19日
    浏览(30)
  • 【ios】【android】3DES_CBC_PKCS5Padding加密、解密问题(附完整代码)

    问题一:加密结果不一致 一、问题描述 实现了android的蓝牙对接后开始着手ios的蓝牙对接,出现了ios加密结果与在线加密的结果一致,而android的加密结果与甲方公司的结果一致的问题。 1.android部分代码如下: 2.ios部分代码如下: 二、问题解决 重新看了一遍android加密调用部

    2023年04月18日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包