广告
返回顶部
首页 > 资讯 > 精选 >Springboot实现密码加密解密的示例分析
  • 368
分享到

Springboot实现密码加密解密的示例分析

springboot 2023-05-30 21:05:09 368人浏览 安东尼
摘要

这篇文章主要介绍了SpringBoot实现密码加密解密的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。现今对于大多数公司来说,信息安全工作尤为重要,就像京东,阿里巴巴

这篇文章主要介绍了SpringBoot实现密码加密解密的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

现今对于大多数公司来说,信息安全工作尤为重要,就像京东,阿里巴巴这样的大公司来说,信息安全是最为重要的一个话题,举个简单的例子:

Springboot实现密码加密解密的示例分析

就像这样的密码公开化,很容易造成一定的信息的泄露。所以今天我们要讲的就是如何来实现密码的加密和解密来提高数据的安全性。

在这首先要引入springboot融合mybatis的知识,如果有这方面不懂得同学,就要首先看一看这方面的知识:

推荐大家一个比较好的博客: 程序猿DD-翟永超 Http://blog.didispace.com/springbootmybatis/

为了方便大家的学习,我直接将源代码上传:

pom.xml

<project xmlns="http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ninemax</groupId> <artifactId>spring-Login-test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>    <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.3.2.RELEASE</version>    <relativePath/>  </parent>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <java.version>1.8</java.version>  </properties>  <dependencies>        <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter</artifactId>    </dependency>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-test</artifactId>      <scope>test</scope>    </dependency>    <dependency>      <groupId>org.mybatis.spring.boot</groupId>      <artifactId>mybatis-spring-boot-starter</artifactId>      <version>1.1.1</version>    </dependency>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-WEB</artifactId>    </dependency>    <dependency>      <groupId>commons-dbcp</groupId>      <artifactId>commons-dbcp</artifactId>    </dependency>    <dependency>      <groupId>com.oracle</groupId>      <artifactId>ojdbc14</artifactId>      <version>10.2.0.3.0</version>    </dependency>             <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-thymeleaf</artifactId>    </dependency>          </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-surefire-plugin</artifactId>        <configuration>          <skip>true</skip>        </configuration>      </plugin>    </plugins>  </build>   </project>

AppTest.java

package com;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class AppTest {   public static void main(String[] args) {     SpringApplication.run(AppTest.class, args);   }   }

User.java

package com.entity;public class User {  private String username;  private String passWord;    public String getUsername() {    return username;  }  public void setUsername(String username) {    this.username = username;  }  public String getPassword() {    return password;  }  public void setPassword(String password) {    this.password = password;  }  @Override  public String toString() {    return "User [username=" + username + ", password=" + password + "]";  }}

UserController.java

package com.controller;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecreTKEy;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.servlet.http.httpservletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.dao.UserDao;import com.entity.User;@Controllerpublic class UserController {   @Autowired   private UserDao userDao;      @RequestMapping("/reGISt")   public String regist() {     return "regist";   }      @RequestMapping("/login")   public String login() {     return "login";   }       @RequestMapping("/success")   public String success(HttpServletRequest request) {     String username = request.getParameter("username");     String password = request.getParameter("password");          userDao.save(username, password);     return "success";   }      @RequestMapping("/Loginsuccess")   public String successLogin(HttpServletRequest request) {     String username = request.getParameter("username");     String password = request.getParameter("password"); ///123456     User user = userDao.findByUname(username);       if(user.getPassword().equals(password)) {         return "successLogin";       }       return "failure";   }}

UserDao.java

package com.dao;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;import com.entity.User;@Mapperpublic interface UserDao {   @Insert("INSERT INTO LOGIN_NINE VALUES(#{username}, #{password})")   void save(@Param("username")String username,@Param("password")String password);      @Select("SELECT * FROM LOGIN_NINE WHERE username= #{username}")   User findByUname(@Param("username")String username);}

application.properties

spring.datasource.url=jdbc:oracle:thin:@10.236.4.251:1521:orclspring.datasource.username=hellospring.datasource.password=lisaspring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

还有一些静态html

(1.)regist.html

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>注册</title><style type="text/CSS">  h2 {   text-align:center;   font-size:35px;   color:red;  }  div {   text-align:center;  }  div input {   margin:10px;  }</style></head><body>   <h2>注册账号</h2>   <div>   <fORM action="success" method="post">                  用户名<input type="text" name="username"/> <br/>                 密码<input type="password" name = "password"/> <br/>      <input type="submit" value="提交"/> &nbsp;      <input type="reset"/>                  </form>   </div></body></html>

(2.)login.html

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>登录</title><style type="text/css">  h2 {   text-align:center;   font-size:35px;   color:red;  }  div {   text-align:center;  }  div input {   margin:10px;  }  </style></head><body>   <h2>欢迎登录</h2>   <div>   <form action="Loginsuccess" method="post">                  请输入用户名<input type="text" name="username"/> <br/>                 请输入密码<input type="password" name = "password"/> <br/>      <input type="submit" value="提交"/> &nbsp;      <input type="reset"/>   <br/>      <a href="/regist" rel="external nofollow" >注册账号</a>            </form>   </div></body></html>

(3.)success.html

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>注册成功</title><style type="text/css">  h2 {   text-align:center;   font-size:60px;   color:green;  }  span {   font-size:30px;   color:green;  }</style></head><body><h2>注册成功</h2><a href="/login" rel="external nofollow" >返回登录</a></body></html>

(4.)failure.html

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>登录失败</title></head><body>     登录失败</body></html>

(5.)successLogin.html

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>成功</title></head><body>   success</body></html>

代码的格式如下:

Springboot实现密码加密解密的示例分析

完成了这一步的话首先运行一下AppTest看是否出错,如果有错,自己找原因,这里就不和大家讨论了,写了这么多,才要要进入正题了

本文采取的是EDS的加密解密方法,方法也很简单,不用添加额外的jar包,只需要在UserController上做出简单的修改就可以了:

*****UserController.java

package com.controller;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.dao.UserDao;import com.entity.User;@Controllerpublic class UserController {   @Autowired   private UserDao userDao;      @RequestMapping("/regist")   public String regist() {     return "regist";   }      @RequestMapping("/login")   public String login() {     return "login";   }         private static final byte[] DES_KEY = { 21, 1, -110, 82, -32, -85, -128, -65 };    @SuppressWarnings("restriction")    public static String encryptBasedDes(String data) {      String encryptedData = null;      try {        // DES算法要求有一个可信任的随机数源        SecureRandom sr = new SecureRandom();        DESKeySpec deskey = new DESKeySpec(DES_KEY);        // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");        SecretKey key = keyFactory.generateSecret(deskey);        // 加密对象        Cipher cipher = Cipher.getInstance("DES");        cipher.init(Cipher.ENCRYPT_MODE, key, sr);        // 加密,并把字节数组编码成字符串        encryptedData = new sun.misc.BASE64Encoder().encode(cipher.doFinal(data.getBytes()));      } catch (Exception e) {        // log.error("加密错误,错误信息:", e);        throw new RuntimeException("加密错误,错误信息:", e);      }      return encryptedData;    }    @SuppressWarnings("restriction")    public static String decryptBasedDes(String cryptData) {      String decryptedData = null;      try {        // DES算法要求有一个可信任的随机数源        SecureRandom sr = new SecureRandom();        DESKeySpec deskey = new DESKeySpec(DES_KEY);        // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");        SecretKey key = keyFactory.generateSecret(deskey);        // 解密对象        Cipher cipher = Cipher.getInstance("DES");        cipher.init(Cipher.DECRYPT_MODE, key, sr);        // 把字符串进行解码,解码为为字节数组,并解密        decryptedData = new String(cipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(cryptData)));      } catch (Exception e) {        throw new RuntimeException("解密错误,错误信息:", e);      }      return decryptedData;    }       @RequestMapping("/success")   public String success(HttpServletRequest request) {     String username = request.getParameter("username");     String password = request.getParameter("password");     String s1 = encryptBasedDes(password);     userDao.save(username, s1);     return "success";   }      @RequestMapping("/Loginsuccess")   public String successLogin(HttpServletRequest request) {     String username = request.getParameter("username");     String password = request.getParameter("password"); ///123456     User user = userDao.findByUname(username);       if(decryptBasedDes(user.getPassword()).equals(password)) {         return "successLogin";       }       return "failure";   }}

此时,直接运行Apptest.java,然后在浏览器输入地址:localhost:8080/regist 注册新的账号(我输入的是用户名:小明 密码:123456),如图

Springboot实现密码加密解密的示例分析

此时查看数据库信息

Springboot实现密码加密解密的示例分析

你就会发现密码实现了加密。

当然,下次登陆的时候直接输入相应的账号和密码即可完成登录,实现了解码的过程。

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

感谢你能够认真阅读完这篇文章,希望小编分享的“Springboot实现密码加密解密的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Springboot实现密码加密解密的示例分析

本文链接: https://www.lsjlt.com/news/221481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot实现密码加密解密的示例分析
    这篇文章主要介绍了Springboot实现密码加密解密的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。现今对于大多数公司来说,信息安全工作尤为重要,就像京东,阿里巴巴...
    99+
    2023-05-30
    springboot
  • SpringBoot实现接口参数加密解密的示例代码
    目录1. 开发加解密 starter1.1 创建项目1.2 加密工具类1.3 响应工具类1.4 定义注解1.5 定义一个 EncryptProperti...
    99+
    2022-11-13
  • jQuery加密密码到cookie的示例分析
    这篇文章主要为大家展示了“jQuery加密密码到cookie的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery加密密码到cookie的示例分析...
    99+
    2022-10-19
  • python实现凯撒密码加密解密的示例代码
    凯撒加密就是通过将字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移,被替换成密文。例如,当偏移量是2的时候,所有的字母B将被替换...
    99+
    2022-11-11
  • PHP代码加密和扩展解密的示例分析
    这篇文章主要介绍了PHP代码加密和扩展解密的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法...
    99+
    2023-06-14
  • SpringBoot实现api加密的示例代码
    目录SpringBoot的API加密对接项目介绍什么是RSA加密加密实战实战准备真刀真枪解密实战实战准备真刀真枪总结项目坑点SpringBoot的API加密对接 在项目中,为了保证数...
    99+
    2022-11-12
  • SpringBoot实现Mysql使用MD5进行密码加密的示例
    项目开发中为了保护用户隐私安全,一般都会用MD5进行密码加密 以下就简单举例SpringBoot 实现Mysql使用MD5进行密码加密做一个简单的例子 看下数据库,这边简单做了用户表...
    99+
    2022-11-12
  • FlutterRSA加密解密的示例代码
    目录对称加密非对称加密第一步、首先pubspec.yaml中添加依赖第二步、获取公钥私钥文件第三步、在pubspec.yaml文件中添加公钥私钥文件。第四步、实现Encrypt加密解...
    99+
    2022-11-13
  • Golang实现AES加密和解密的示例代码
    目录对称加密 AES 算法加解密文件加密解密说明对称加密 AES 算法 (Advanced Encryption Standard ,AES) 优点 算法公开、计算量小、加密速度快、...
    99+
    2022-11-13
  • CentOS下Vim加密解密文本的示例分析
    这篇文章主要介绍了CentOS下Vim加密解密文本的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CentOS用vim/vi给文件加密和解密一、 利用 vim/vi ...
    99+
    2023-06-10
  • nodejs开发微信小程序实现密码加密的示例分析
    小编给大家分享一下nodejs开发微信小程序实现密码加密的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序开发-...
    99+
    2022-10-19
  • Java实现Excel文件加密解密的示例代码
    目录概述示例大纲工具Java代码示例示例1加密工作簿示例2解密工作簿示例3加密工作表示例4加密工作表指定数据范围示例5设置工作表公式隐藏示例6解密Excel工作表概述 设置excel...
    99+
    2022-11-13
  • python实现希尔密码加密的示例代码
    目录原理实现原理 希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。 每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得...
    99+
    2022-06-02
    python 希尔密码加密 python 希尔密码
  • SpringBoot整合BCrypt实现密码加密
    本文实例为大家分享了SpringBoot整合BCrypt实现密码加密的具体代码,供大家参考,具体内容如下 一. 首先在pom依赖中加入依赖: <!-- security依赖...
    99+
    2022-11-12
  • 国密SM2: 加解密实现 java代码完整示例
    目录  具体Java代码SM2算法加解密实现Demo: pom依赖引入 :  国家密码管理局于2010年12月17日发布了SM2算法,并要求现有的基于RSA算法的电子认证系统、密钥管理系统、应用系统进升级改造,使用支持国密SM2算法的证...
    99+
    2023-08-31
    java 算法
  • C++实现RSA加密解密算法是示例代码
    目录一、什么是RSA算法1.对称加密2.非对称加密3.非对称加密的应用二、RSA算法的基础操作步骤1.生成公钥和私钥2.用公钥加密信息 3.用私钥解密信息三、AC代码四、R...
    99+
    2022-11-13
  • Java Base64 加密与解密示例代码
    目录一、Java 8 基本 Base64二、Java 8 URL 加密三、Java 8 MIME(Multipurpose Internet Mail Extensions) 加密四...
    99+
    2022-12-12
    Java Base64 加密与解密 Java Base64 加密
  • Laravel中加密解密与哈希实例的分析
    这篇文章给大家分享的是有关Laravel中加密解密与哈希实例的分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、加密解密当你的应用程序中需要用到加密和解密的地方时可以使用Laravel自带的加密解密工具。La...
    99+
    2023-06-14
  • java实现的RC4加密解密算法示例
    本文实例讲述了java实现的RC4加密解密算法。分享给大家供大家参考,具体如下:有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个Java 版本的RC4加解密算法。public static String Hlovey...
    99+
    2023-05-31
    java 加密 算法
  • python密码加密与解密的实现
    目录一、对称加密1.1 安装第三方库 - PyCrypto1.2 加密实现二、非对称加密三、摘要算法3.1 md5加密3.2 sha1加密3.3 sha256加密3.4 sha384...
    99+
    2023-02-07
    python 密码加密 python 密码解密
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作