JWT的无限可能性:它如何在身份验证、单点登录、API安全等领域发挥作用

news2024/11/26 4:41:41

整理下工作中常用到的加密解密算法 和 使用场景

一、Base64和UrlBase64

二、Md5 + salt

二、对称加密

四、非对称加密

这节整理 MD5、MD5+salt基本介绍、使用场景及特点,以及java实现机制(文末附代码,需要的自取哈)

二、Md5 + salt

Md5加密 (在线加解密网址 https://www.cmd5.com/)

beba7b894b3795af80663dc918bfcab5.jpeg


定义:

(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用以提供消息的完整性保护。

特点:

加密不可逆,即无法通过密文得到原文。

不变性,即相同的原文,通过MD5算法得到的密文总是相同的。

散列性,即对原文作轻微的改动,都可导致最终的密文完全改变。

使用场景:

普通密码管理:

用户明文进行加密后存储DB,登录时比对是否一致(因其已被破解,一般 密码+salt 进行MD5加密存储来提高安全性);

数字签名:

比如对文件中内容MD5加密,如果该文件被篡改,只要重新计算Md5并比对前后的md5值,防止改动内容的“抵赖”,即数字签名的作用。

一致性验证:

MD5通过其不可逆的字符串变换算法,产生唯一的MD5信息摘要。


Md5加密 + salt

salt就是一个 随机的字符串

使用方式:

1. 数据库user表中设置一个slat列,每一次注册用户时,生成一个独一无二的slat(盐)写入数据库slat列,比如手机号作为登录用户ID。

2. 使用md5+slat的方式进行密码加密,写入数据库password列。

3. 登录用户时,先根据userid(手机号)获得slat,输入密码和md5+slat加密之后得到的password和数据库password对比,相同,则登入成功。


java实现过程

引入pom

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>

java实现Md5加密,Md5+salt加密

public class Md5Util {
private static final String UTF8 = StandardCharsets.UTF_8.name();

/**
* 根据长度n 获取唯一salt值
*
* @param n
* @return
*/
public static String createSlat(int n) {
if (n == 0) return "";
char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
char aChar = chars[new Random().nextInt(chars.length)];
sb.append(aChar);
}
return sb.toString();
}

/**
* 获取MD5+salt 密文
* @param str password明文
* @param length salt长度
* @return
*/
public static String getMD5CodeBySalt(String str, int length) {
String saltStr = str.concat(createSlat(length));
System.out.println("add salt值后的明文:" + saltStr);
return getMD5Code(saltStr);
}

/**
* 获取MD5 密文
* @param str password明文
* @return
*/
public static String getMD5Code(String str) {
String s = "";
try {
// 对str进行Md5加密
s = DigestUtils.md5Hex(str.getBytes(UTF8));
} catch (Exception e) {
e.printStackTrace();
}
return s;
}

public static void main(String[] args) {
System.out.println("不带salt值的MD5加密:明文123456a,秘文:" +
Md5Util.getMD5Code("123456a"));
System.out.println("带salt值的MD5加密:秘文:" +
Md5Util.getMD5CodeBySalt("123456a", 2));
}
}执行效果:

29f3dad32ec36b21fdc6d23c91c122a0.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1097403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023_Spark_实验十七:导入招聘大数据(项目)

一、爬虫爬取的招聘网站数据 二、在MySQL中创建空表 SET FOREIGN_KEY_CHECKS0;-- ---------------------------- -- Table structure for jd_jobs -- ---------------------------- DROP TABLE IF EXISTS jd_jobs; CREATE TABLE jd_jobs (job_name text,job_date text,minSale…

【无标题】markdow 模板

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Springboot项目中加载Groovy脚本并调用其内部方代码实现

前言 项目中部署到多个煤矿的上&#xff0c;每一种煤矿的情况都相同&#xff0c;涉及到支架的算法得写好几套&#xff0c;于是想到用脚本实现差异变化多的算法&#xff01;一开始想到用java调用js脚本去实现&#xff0c;因为这个不需要引入格外的包&#xff0c;js对我来说也没…

【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;为什么Java代码可以实现…

uniapp(uncloud) 使用生态开发接口详情(1简单的创建)

开发接口对比时间: 用java开发接口周期太长, 大概5-6个月左右 用php 开发接口周期同样太长, 大概3-4个月左右 用node.js 开发接口周期相对短一点, 大概1-2个月左右 用uniapp 开发接口, 可以不到 1-2周的时间 这里我使用 uniapp 开发接口, 废话不多说了,直接开干 HBuilder官网(…

头像Css

现有如下的图标&#xff0c;他这外层的白色圆圈是border,你敢信 .top-bar__img {margin: 0 8px 0 5px;padding: 2px;width: 30px;height: 30px;border-radius: 100%;box-sizing: border-box;border: 1px solid #eee;vertical-align: middle; }

《软件方法》2023版第1章(08)使用UML的理由,挑破乱七八糟图的脓包

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.3 UML 1.3.2 使用UML的理由 在开发团队中&#xff0c;不乏刻意排斥UML的人。这些人如果只是不使用UML&#xff0c;改为使用其他标准的图形表示法&#xff08;如BPMN&#xff09;&a…

城市综合管廊运维的系统集成方案

摘 要&#xff1a;从网络拓扑结构、开放式实时以太网协议、控制层系统配置方面介绍了综合管廊的系统网络架构设计&#xff0c;分析了无线网络特性&#xff0c;阐述了基于HTML5架构所能实现的功能的初步构想&#xff0c;以便于综合管廊运维人员巡检&#xff0c;确保管廊本体安全…

NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程(超详细)

NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程 文章目录 NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程前言Serial Plotter测试前期准备打开工具方法 1方法 2 测试代码 总结 前言 在嵌入式的开发过程中&#xff0c;我们经常会采集一些传感器的数据&#xff0c…

MVCC与BufferPool缓存机制

MVCC多版本并发控制机制 Mysql在可重复读隔离级别下如何保证事务较高的隔离性&#xff0c;我们上节课给大家演示过&#xff0c;同样的sql查询语句在一个事务里多次执行查询结果相同&#xff0c;就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。 这个隔离性就是…

游戏开发年度报告 | 2023年游戏开发团队最流行的制作和发行的方式

近期&#xff0c;Perforce发布了《2023游戏开发与设计现状报告》。此报告调查了来自全球各地的游戏开发专业人士&#xff0c;了解他们面临的主要开发挑战、使用的工具和流程&#xff0c;以及目前最让他们对这个行业感到兴奋的方面。 龙智作为Perforce授权合作伙伴&#xff0c;将…

wifi指纹室内定位系统 计算机竞赛

简介 今天来介绍一下室内定位相关的原理以及实现方法; WIFI全称WirelessFidelity&#xff0c;在中文里又称作“行动热点”&#xff0c;是Wi-Fi联盟制造商的商标做为产品的品牌认证&#xff0c;是一个创建于IEEE 802.11标准的无线局域网技术。基于两套系统的密切相关&#xff…

MBR10100CT-ASEMI肖特基二极管MBR10100CT

编辑&#xff1a;ll MBR10100CT-ASEMI肖特基二极管MBR10100CT 型号&#xff1a;MBR10100CT 品牌&#xff1a;ASEMI 芯片个数&#xff1a;2 封装&#xff1a;TO-220 恢复时间&#xff1a;&#xff1e;50ns 工作温度&#xff1a;-65C~175C 浪涌电流&#xff1a;150A 正向…

【微前端】single-spa 到底是个什么鬼

前言 说起微前端框架&#xff0c;很多人第一反应就是 single-spa。但是再问深入一点&#xff1a;它是干嘛的&#xff0c;它有什么用&#xff0c;可能就回答不出来了。 一方面没多少人研究和使用微前端。可能还没来得及用微前端扩展项目&#xff0c;公司就已经倒闭了。 另一方…

关于京东API数据接口业务的详细介绍

参数说明 通用参数说明 url说明 https://…….cn/平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京东等&#xff0c; API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_api_keysecret:调用secret,测试secret:(不用填写)cache:[ye…

长沙上市公司董秘联谊会,来啦!

上市公司的数量&#xff0c;是判断一座城市经济实力的重要指标。 在当前复杂的竞争环境中&#xff0c;提升上市公司的数量和质量&#xff0c;以产业思维促进城市内外的上市公司合作交流&#xff0c;是城市提升经济综合实力的有效举措。 10月13日&#xff0c;在由长沙市委统战…

2023年中国电信运营商IT支撑系统市场规模及销量、均价分析[图]

电信运营商IT支撑系统能够为最终用户管理服务&#xff0c;并且管理与底层网络功能有关的服务――涵盖跨众多网络的服务设计、履行和保证&#xff0c;针对各个客户群。电信运营商IT支撑系统有助于跨不同类型的网络&#xff08;包括物理网络、虚拟网络和混合网络&#xff09;交付…

代理现货白银有什么手续

成为现货白银代理商的好处有很多&#xff0c;一方面打理依然可以像普通投资者那样&#xff0c;采用平台的交易服务&#xff0c;直接在市场上通过交易&#xff0c;赚取高杠杆所带来的高回报&#xff0c;另一方面还可以根据自己客户的交易量&#xff0c;从平台获得一定的返佣&…

Linux下企业级夜莺监控分析工具的远程访问设置【内网穿透】

文章目录 前言1. Linux 部署Nightingale2. 本地访问测试3. Linux 安装cpolar4. 配置Nightingale公网访问地址5. 公网远程访问Nightingale管理界面6. 固定Nightingale公网地址 前言 夜莺监控是一款开源云原生观测分析工具&#xff0c;采用 All-in-One 的设计理念&#xff0c;集…

【计算机毕设选题推荐】蛋糕甜品店管理系统SpringBoot+SSM+Vue

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 基于SpringBoot的蛋糕甜品店管理系统 技术栈 SpringBootSSMVueMySQLMaven 文章目录 一、蛋糕…