当前位置: 首页 > news >正文

Java和Vue字符串加密

字符串加密

AES 加密算法

在 Java 中,可以使用不同的加密算法来对字符串进行加密。以下是使用 AES 加密算法的示例代码,演示如何对一个字符串进行加密:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;public class StringEncryptionExample {private static final String SECRET_KEY = "ThisIsASecretKey"; // 密钥,需要保密public static String encrypt(String plainText) throws Exception {SecretKeySpec secretKey = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, secretKey);byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());return Base64.getEncoder().encodeToString(encryptedBytes);}public static String decrypt(String encryptedText) throws Exception {SecretKeySpec secretKey = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, secretKey);byte[] decodedBytes = Base64.getDecoder().decode(encryptedText);byte[] decryptedBytes = cipher.doFinal(decodedBytes);return new String(decryptedBytes);}public static void main(String[] args) {try {String originalString = "Hello, World!"; // 要加密的字符串String encryptedString = encrypt(originalString);System.out.println("Encrypted: " + encryptedString);String decryptedString = decrypt(encryptedString);System.out.println("Decrypted: " + decryptedString);} catch (Exception e) {e.printStackTrace();}}
}

在上述示例中,使用了 AES 加密算法对字符串进行加密和解密。请注意以下几点:

  • SECRET_KEY 是用于加密和解密的密钥,需要保密。
  • 加密和解密使用相同的密钥。
  • 为了便于展示,示例中使用了 ECB 模式和 PKCS5 填充方式,但在实际应用中,建议使用更安全的模式和填充方式,例如 CBC 模式和 PKCS7 填充。
  • 示例中将加密后的字节数组使用 Base64 进行编码,以便于打印和传输。

需要注意的是,安全性和加密性能是加密算法选择的关键因素之一。在实际应用中,您可能需要使用专门的密码库,选择适合您需求的加密算法,以及遵循密码学的最佳实践来确保数据的安全性。

md5加密

在 Java 中,可以使用 java.security.MessageDigest 类来实现 MD5 加密。以下是一个示例代码,演示如何使用 Java 实现对一个字符串进行 MD5 加密:

import java.security.MessageDigest;public class MD5EncryptionExample {public static String encrypt(String input) {try {MessageDigest md = MessageDigest.getInstance("MD5");byte[] messageDigest = md.digest(input.getBytes());StringBuilder hexString = new StringBuilder();for (byte b : messageDigest) {hexString.append(String.format("%02x", b & 0xFF));}return hexString.toString();} catch (Exception e) {e.printStackTrace();return null;}}public static void main(String[] args) {String originalString = "Hello, World!"; // 要加密的字符串String encryptedString = encrypt(originalString);System.out.println("MD5 Encrypted: " + encryptedString);}
}

在上述示例中,我们使用 MessageDigest 类来获得 MD5 加密实例,并将要加密的字符串的字节数组传递给 digest 方法。然后,我们将每个字节转换为十六进制字符串,并将它们连接在一起,形成最终的 MD5 加密结果。

需要注意的是,尽管 MD5 加密在过去广泛使用,但由于其存在碰撞(collision)和安全性弱点,不再被推荐用于密码存储等安全应用。如果您需要对敏感信息进行加密,建议选择更安全的加密算法,如 SHA-256、SHA-512 或 bcrypt。

前端md5加密

在 Vue 前端使用 MD5 加密可以借助现有的库,例如 js-md5。以下是一个示例代码,演示如何在 Vue 项目中使用 js-md5 库对一个字符串进行 MD5 加密:

  1. 首先,安装 js-md5 库:
npm install js-md5
  1. 在需要使用的 Vue 组件中,可以这样实现 MD5 加密:
<template><div><input v-model="inputText" placeholder="Enter text" /><button @click="encrypt">Encrypt</button><p>Encrypted Text: {{ encryptedText }}</p></div>
</template><script>
import md5 from 'js-md5';export default {data() {return {inputText: '',encryptedText: ''};},methods: {encrypt() {this.encryptedText = md5(this.inputText);}}
};
</script>

在上述示例中,我们在 Vue 组件中引入了 js-md5 库,并使用 md5 函数来对输入的文本进行 MD5 加密。用户输入的文本通过双向绑定存储在 inputText 数据属性中,而加密后的文本会显示在 encryptedText 数据属性中。

确保您已经在 Vue 项目中安装了 js-md5 库,然后将上述示例代码添加到您的 Vue 组件中即可。这样,在用户输入文本并点击 “Encrypt” 按钮后,加密后的结果将在页面上显示出来。

相关文章:

Java和Vue字符串加密

字符串加密 AES 加密算法 在 Java 中&#xff0c;可以使用不同的加密算法来对字符串进行加密。以下是使用 AES 加密算法的示例代码&#xff0c;演示如何对一个字符串进行加密&#xff1a; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java…...

Java:java版结巴分词:jieba-analysis

文档 https://github.com/huaban/jieba-analysishttps://mvnrepository.com/artifact/com.huaban/jieba-analysis 依赖 <!-- https://mvnrepository.com/artifact/com.huaban/jieba-analysis --> <dependency><groupId>com.huaban</groupId><art…...

java生成一个符合密码学和安全性的随机秘钥

有时 我们在生成token 或者完成某种加密形式时会需要一个秘钥 但是 有些时候 项目开发并没有规定用什么秘钥 但是 秘钥都是要有一定格式规范的 我们可以通过以下代码生成一个随机秘钥 import java.security.SecureRandom; import java.util.Base64;public class TokenGenerat…...

C++ - 右值引用 和 移动拷贝

右值引用 我们先来了解什么是左值&#xff0c;什么是右值&#xff1a; 左值 和 有值 区分 首先&#xff0c;左值 和 右值 并不是完全意味着 在 "" 左边的就是 左值 &#xff1b; 在 "" 右边的就是右值。这是不一定的。只能说&#xff0c;在左边的大概率是…...

项目成员积分规则

在当下的项目/团队管理种&#xff0c;如何让成员能清晰的看到&#xff0c;自己的工作、努力在团队种属于那个段位&#xff0c;通过这个形式&#xff0c;并配合其他方式去点燃成员的进步之心。以积分的形式&#xff0c;代替绩效考核&#xff0c;一些零散的想法&#xff0c;欢迎各…...

Linux CentOS7 vim多窗口编辑

我们在用vim编辑文件时&#xff0c;有各种需求。如有时需要在多个文件之间来回操作&#xff0c;一会关闭一个文件&#xff0c;一会再打开另外一个文件&#xff0c;这样来回操作显得太笨拙。有时&#xff0c;vim编辑多行的大文件&#xff0c;来回查看、编辑前面一部分及最后一部…...

git使用,一点点

查看自己有没有安装git git --version 如果没有安装请执行sudo yum install -y git来安装 git 指令 git log 查看日志 git pull 同步远端和本地仓库 这就是冲突的报错&#xff1a; 所以这个时候你要同步一下git pull...

第五章:最新版零基础学习 PYTHON 教程—Python 字符串操作指南(第八节 - 如何在 C/C++、Python 和 Java 中分割字符串?)

通过某些分隔符分割字符串是一项非常常见的任务。例如,我们有一个文件中以逗号分隔的项目列表,并且我们希望数组中包含各个项目。 几乎所有编程语言都提供按某些分隔符分割字符串的函数。 目录 在C中: 在 C++ 中 方法一:使用C++的stringstream API...

【Java】语法特性篇

语法特性篇 Java对象的比较 1. 对象比较的问题 Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较。那为什么可以比较&#xff1f; 因为&#xff1a;对于用户实现自定义类型&#xff0c;都默认继承自Object类&#xff0c;而Object类中提供了equal方法&#xf…...

Vim教程

目录 vim 介绍 常用的四种模式 首先先学会如何正确进入和退出vim&#xff1a; normal模式 insert模式&#xff1a; command模式&#xff1a; v-block模式&#xff1a; vim异常退出 vim配置 vim 介绍 Vim是一款高度可定制的文本编辑器&#xff0c;它的前身是Vi&#xf…...

selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况

selenium查找网页如何处理网站资源一直加载失败的情况 selenium获取一个网页&#xff0c;某个网页的资源卡了很久还没有加载成功&#xff0c;如何放弃这个卡的数据&#xff0c;继续往下走 有2钟方式。通常可以采用下面的方式一来处理这种情况 方式一、WebDriverWait 这种方式…...

并发工具类库使用的常见问题

一、ThreadLocal在多线程环境中没有清理 由于ThreadLocal是和线程绑定的&#xff0c;如果线程被复用了&#xff0c;也即使用了线程池&#xff0c;那么ThreadLocal中的值是可能被复用的&#xff0c;这个特性如果是开发者没有预料到的&#xff0c;那么会产生很大的问题。例如&am…...

GD32F10X ----RTC

1. RTC的简介 STM32 的实时时钟&#xff08;RTC&#xff09;是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC 模块和时钟配置…...

使用UiPath和AA构建的解决方案 1. 机器人过程自动化入门

你好!在这本系列,我们将指导您完成一些真实世界的机器人过程自动化(RPA)项目。感谢您的加入。当你完成本系列时,你将具备使用UiPath和Automation Anywhere在最低指导下进行简单到中等复杂度RPA项目的知识、技术和心态。 RPA是一项令人兴奋的新技术,被视为使用新的先进技…...

rust字面量

字面量就是值。值最终必须编码成二进制存储在某块内存上。 变量与字面量的关系就像杯子和水的关系。 字面量是有类型的。字面量类型有&#xff1a;布尔、数字、文本、字节 一、布尔 类型是bool true false 二、数字 通过后缀表示类型 通过前缀表示进制 通过 “_” 来分割数…...

Unix Network Programming Episode 79

‘gai_strerror’ Function The nonzero error return values from getaddrinfo have the names and meanings shown in Figure 11.7. The function gai_strerror takes one of these values as an argument and returns a pointer to the corresponding error string. #incl…...

Cesium展示——wkt 数据绘制

文章目录 需求分析1. 第一步,数据类型转换2. 第二步,数据渲染需求 WKT 是什么:WKT 简介 在这里,我选择将 Cesium 中将wkt数据转化为geoJSON格式后渲染至地球上 分析 1. 第一步,数据类型转换 npm install terraformer-wkt-parser --savelet wkts =...

打造完美家庭空间,让生活更加舒适

在现代繁忙的都市生活中&#xff0c;家是人们温暖而舒适的避风港。而如何打造一个恰到好处的家庭空间&#xff0c;成为了许多人心中的追求。今天&#xff0c;就让我们来探索一些空间布局方案&#xff0c;为您的家庭营造一个完美融合功能与美感的舒适空间。 &#x1f3e0;&…...

解决loadDep:omelette: sill install loadAllDepsIntoIdealTree

报错信息如下&#xff1a; 解决方案&#xff1a; 1、设置为淘宝的镜像源 npm config set registry https://registry.npm.taobao.org 2、 命令检验是否成功 npm config get registry 3、继续运行npm install即可 npm install 运行效果&#xff1a;...

【深蓝学院】手写VIO第2章--IMU传感器--作业

这次作业坑很多&#xff0c;作业说明的不清楚&#xff0c;摸索了很长时间才将此次作业完成&#xff0c;在这里进行记录。 1. T1 1.1 题干 1.2 解答 1.2.1 法1&#xff0c;ros related方法 不知道为什么我的launch不了&#xff0c;在imu_utils目录下面建立build后&#xff0…...

终极指南:mozjpeg Trellis量化技术如何实现最佳质量与文件大小平衡

终极指南&#xff1a;mozjpeg Trellis量化技术如何实现最佳质量与文件大小平衡 【免费下载链接】mozjpeg Improved JPEG encoder. 项目地址: https://gitcode.com/gh_mirrors/mo/mozjpeg mozjpeg作为一款优化的JPEG编码器&#xff0c;通过创新的Trellis量化技术&#xf…...

Arduino Nano与SSD1306实战:从静态位图到动态动画的完整实现

1. Arduino Nano与SSD1306 OLED屏入门指南 如果你手头正好有一块Arduino Nano开发板和SSD1306驱动的OLED屏幕&#xff0c;想要实现从静态图片显示到动态动画的效果&#xff0c;那这篇文章就是为你准备的。我最近在做一个智能家居项目时&#xff0c;正好用到了这个组合&#xff…...

SpringBoot 拦截器(Interceptor)自定义实现登录鉴权

在 Web 项目中&#xff0c;登录鉴权是最核心的安全机制&#xff1a;接口必须校验用户是否登录、是否拥有权限&#xff0c;未登录则直接拦截&#xff0c;禁止访问。SpringBoot 提供的 HandlerInterceptor 拦截器&#xff0c;是实现登录校验、日志记录、接口限流最优雅的方案。本…...

OpenClaw多任务队列:GLM-4.7-Flash并行处理邮件整理与文档生成

OpenClaw多任务队列&#xff1a;GLM-4.7-Flash并行处理邮件整理与文档生成 1. 为什么需要多任务队列 上周五下午&#xff0c;我同时面临三个紧急任务&#xff1a;整理客户邮件、生成季度报告草稿、汇总项目会议纪要。手动切换不同工具时&#xff0c;不仅效率低下&#xff0c;…...

Python内存暴涨突然崩溃?3个被90%开发者忽略的GC调优关键点揭秘

第一章&#xff1a;Python内存暴涨与崩溃的典型现象诊断当Python程序在运行中突然响应迟缓、频繁触发MemoryError&#xff0c;或进程被操作系统强制终止&#xff08;如Linux下收到SIGKILL (9)&#xff09;&#xff0c;往往标志着内存使用已严重失控。这类问题通常不会立即暴露&…...

R200系列超高频读写器:从指令集到实战的物联网资产管理开发指南

1. R200系列读写器&#xff1a;物联网资产管理的利器 第一次接触R200系列读写器时&#xff0c;我就被它的多标签识读能力惊艳到了。这款超高频&#xff08;UHF&#xff09;读写器不仅支持840MHz~960MHz频段&#xff0c;还能在30米范围内同时读取上百张RFID标签&#xff0c;这简…...

LlamaIndex中文文档全解析:从安装到实战RAG系统的保姆级指南

LlamaIndex中文文档全解析&#xff1a;从安装到实战RAG系统的保姆级指南 在人工智能技术快速迭代的今天&#xff0c;如何让大型语言模型(LLM)真正理解并处理私有数据成为开发者面临的核心挑战。LlamaIndex作为专为上下文增强设计的框架&#xff0c;正在改变我们构建智能应用的方…...

当固体力学遇上AI:Energy-based PINN如何搞定超弹性橡胶材料仿真?

Energy-based PINN&#xff1a;颠覆超弹性材料仿真的无网格革命 橡胶密封圈在高压环境下的变形预测误差超过40%、人工心脏瓣膜材料的疲劳寿命仿真需要72小时计算、柔性电子器件在弯曲状态下的应力分布难以精确建模——这些困扰研究者的难题&#xff0c;正在被一种结合深度学习和…...

中国象棋AlphaZero:从零构建强化学习象棋AI的完整指南

中国象棋AlphaZero&#xff1a;从零构建强化学习象棋AI的完整指南 【免费下载链接】ChineseChess-AlphaZero Implement AlphaZero/AlphaGo Zero methods on Chinese chess. 项目地址: https://gitcode.com/gh_mirrors/ch/ChineseChess-AlphaZero 中国象棋AlphaZero是一个…...

3大核心功能打造专业级开源服装设计解决方案

3大核心功能打造专业级开源服装设计解决方案 【免费下载链接】Seamly2D Open source patternmaking software to democratize fashion. 项目地址: https://gitcode.com/gh_mirrors/se/Seamly2D Seamly2D作为一款开源服装制版软件&#xff0c;通过参数化设计、精确测量管…...