登录注册的基本加密方法(可逆)
加密算法
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(value = "/register")public ModelAndView register(Management management) {ModelAndView mv = new ModelAndView();Management management1 =managementRepository.findByManagementPhone(management.getManagementPhone());List<Management> management2 = managementRepository.findAll();int lastpage=management2.size()/8;if (management1==null){management.setManagementPass(encryptBasedDes(management.getManagementPass()));managementRepository.save(management);}else {management.setManagementID(management1.getManagementID());management.setManagementPass(encryptBasedDes(management.getManagementPass()));managementRepository.save(management);}return new ModelAndView("redirect:/management/show?page="+lastpage);}
//登录
@RequestMapping(value = "/loginManagement")public ModelAndView login(Management management, HttpSession sessoin) {ModelAndView mv = new ModelAndView();//判断所输入账号密码是否匹配//如果匹配成功management.setManagementPass(encryptBasedDes(management.getManagementPass()));if (managementService.verifyManagement(management)) {//通过名字和密码找到该Management,并存进sessionManagement management1=managementRepository.findByManagementPhoneAndAndManagementPass(management.getManagementPhone(), management.getManagementPass()).get(0);sessoin.setAttribute("management", management1);//测试从session获取该Management判定权限Management test=(Management)sessoin.getAttribute("management");switch (management1.getManagementRole()){case "1":mv.setViewName("");break;case "2":case "3":mv.setViewName("");break;}mv.setViewName("/success.btl");return mv;}//如果匹配不成功else {mv.setViewName("/login.btl");return mv;}
转载于:https://www.cnblogs.com/zhu573514187/p/9439403.html
登录注册的基本加密方法(可逆)相关推荐
- 简单CSS/HTML的动画登录注册网页[拳皇]
简单CSS/HTML的动画登录注册网页[拳皇] 今天我们学习了过渡与动画效果,接下来将结合此方法呈现出来一个简单的CSS/HTML的登录注册网页. *同页面切换登录注册哦~ 页面截图 方法原理 [1] ...
- TCP聊天+传输文件服务器服务器套接字v2.6 - 登录注册界面更新 - loading界面应用
TCP聊天+传输文件服务器服务器套接字v2.6 更改的地方: 主要是客户端界面更改 注册, 登录界面 (都知道啊, v1.8的改进后输入用户名, 到了主界面的时候才能输入密码, 但现在是直接输入用户名 ...
- 对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密
RSA和AES结合使用 接上篇的RSA和AES算法加密之后,AES对称算法对数据量大的加密比较快,而RSA公私钥加密的话会影响加密效率,但是AES的加密与解密的密钥是一致的,导致密钥不能外泄,密钥在网 ...
- go 注册登录 mysql_golang实现用户登录注册的方法
golang实现用户登录注册的方法 发布时间:2020-06-17 10:56:15 来源:亿速云 阅读:198 作者:Leah 这篇文章给大家分享的是golang实现用户登录注册的方法,相信大部分人 ...
- python做一个登录注册界面_python做一个登录注册界面的方法
python做一个登录注册界面的方法 发布时间:2020-08-21 10:37:05 来源:亿速云 阅读:111 作者:小新 这篇文章主要介绍python做一个登录注册界面的方法,文中介绍的非常详细 ...
- 易语言注册机sign加密解决方法
个人理解哈,一般大家看到的sign加密是md5的,为什么呢,因为很多网站不会自己写加密库,然后就是加密太难也没太大作用..废话不多说开始教大家怎么做... 以某网站为例哈... 先说明,很多时候我是不 ...
- 关于新版高校体育登录请求加密方法的逆向和再破解
标题上为什么说是再破解呢?因为已经有某开源平台上的大牛给我们铺过路了,具体是哪位在这里就不说了,懂的人自然能找到.这位大牛也很久没有更新了,在高校体育的大更之后,原先的登陆方式已经失效了,事实上只要在 ...
- Java小案例——方法实现简单登录注册
简单登录和注册 一.登录 1. 内容介绍 定义一个内置的账号和密码,写好账号输入.密码输入.随机验证码生成.验证码输入方法(3个输入方法没有使用重载)以及账号密码验证码比较方法.调用这些方法实现简单的 ...
- Android登录注册功能加密处理
<Android使用OKhttp3实现登录注册功能+springboot搭建后端>这篇教程介绍了登录注册的流程及基本实现.但是有一些小问题.就是后端处理的时候,URL将用户名密码使用明文加 ...
最新文章
- Rocksdb 的优秀代码(二)-- 工业级 打点系统 实现分享
- jittor和pytorch生成网络对比之cogan
- RocketMQ错误消息重试策略之Consumer的重试机制(timeout情况)
- ReentrantReadWriteLock可重入读写锁分析
- Elasticsearch的Watcher插件
- 查询Linux的公网及内网IP
- FORTRAN里的SCALE函数
- 《人工智能 一种现代方法》第三版 第1章 概述 笔记摘录
- 计网实验二——以太帧、IP报文分析
- 502 (Bad Gateway) 原因及解决方法
- IDEA中好用的功能(不断更新中)
- 佳佳的筷子 Chopsticks
- AT指令介绍及用法,AT 指令集合
- 我国支付工具主要有哪几种
- 零序电流继电器器JL-8C-12-2-2
- 面对Spring Boot 3最低支持Java17如洪水猛兽袭来,何去何从
- 华为设备如何查看光模块的序列号?
- UeeShop 如何对接轮询系统
- 15. Eul的神圣法杖
- 爬取网易buff CSGO饰品数据 - 优化篇
热门文章
- 如何成为云原生时代的卓越架构师?
- 基于Flink+ClickHouse构建实时游戏数据分析最佳实践
- 温商机器人企业_7家温商企业上榜“中国企业500强”
- 【枭·音频】声随意动——浅谈《暗影火炬城》声音设计
- 浅聊程序化世界构建流程
- 小米回应将放弃“MI”字logo:不存在停止使用
- The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server
- Oracle 11g 数据统计量Pending处理
- jquery的$.extend和$.fn.extend作用及区别(—)
- 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...