面试--你的数据库中密码是如何存储的?

文章目录

      • 三种分类
      • 使用 MD5 加密存储
      • 加盐存储
      • Base64 编码:
      • 常见的对称加密算法
      • 常见的非对称加密算法
      • https 传输加密

在开发中需要存储用户的密码,这个密码一定是加密存储的,如果是明文存储那么如果数据库被攻击了,密码就泄露了。

我们要对数据库的密码进行加密,那么就会问道常用的一些加密算法了。

三种分类

1.对称加密,密钥只有一个,加密和解密都是这个密码。

2.非对称加密,密钥是成对出现了,一个是公钥另一个是私钥。加密和解密使用不同的密钥。加密速度较慢,这个还可以结合 Https 去问.

3.Hash 算法,这是一种不可逆的算法,用于验证数据的完整性。但是可能会被暴力破解

使用 MD5 加密存储

创建一个 MessageDigest 创建一个 md5 的消息摘要,对 123456 进行加密.

public class MD5 {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        // 创建一个MD5消息摘要
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        // 计算字符串的MD5值
        byte[] bytes = md5.digest("123456".getBytes());

        // 输出MD5值
        for (byte b : bytes) {
            System.out.printf("%02x", b);
        }
    }
}

MD5 加密本身是不可逆向的,也就是不可破解,但可以建立 MD5 加密数据库,把常见的密码加密之后使用数据库存储起来.然后就能够实现破解.这样是非常不安全的.

加盐存储

可以在密码的前面或者后面加一个字符串,然后再进行加密,并且每次加密的都要不一样. 这个字符串叫做盐值,我们把这个盐存储到数据库中去,当用户登录的时候从数据库中再取出这个盐,进行密码的校验.

使用 UUID 生产不重复的字符串.进行加密

public static void main(String[] args) throws NoSuchAlgorithmException {
    UUID    uuid = UUID.randomUUID();
    String  str  = uuid.toString().substring(0, 8);
    // 创建一个MD5消息摘要
    MessageDigest md5 = MessageDigest.getInstance("MD5");
    // 计算字符串的MD5值
    String password = str + "123456";
    byte[] bytes = md5.digest(str.getBytes());
    // 输出MD5值
    for (byte b : bytes) {
        System.out.printf("%02x", b);
    }
}

即使相同的密码在数据库中存储的也是不一样的.

Base64 编码:

Base64 编码是将二进制的数据如图片、音频文件等信息打印成字符编码方式,使用 64 个字符 A-Z a-z 0-9 + / 来表示二进制数据。

二进制数据是 8 位一组,表示一个字节的,Base64 编码是按照 6 位一组的,每一个 Base64 编码字符代表 6 位二进制数据。

如果输入的数据不是三字节的的证书背书,会进行填充。

前面带上 前缀 用于在 html 页面中显示对应的图片。图片如果越大,对应的编码长度也就越大。

public  static String prefix = "data:image/png;base64,";
public static String encodeImageToBase64(String imagePath) {
try {
    // 读取图片文件
    byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath));

    // 使用 Java 8 Base64 类进行编码
    return prefix+Base64.getEncoder().encodeToString(imageBytes);
} catch (IOException e) {
    e.printStackTrace();
    return null;
}
}

将生产的 Base64 便阿门直接复制到浏览器中就可以显示出来图片。

用途 用来执着前端页面的验证码信息,使用 Base64 编码。

常见的对称加密算法

只用一个密钥,如果密钥被泄露了那么会出现安全的问题.

https://blog.csdn.net/u014294681/article/details/86690241

常见的非对称加密算法

https://blog.csdn.net/u014294681/article/details/86705999

https 传输加密

https://segmentfault.com/a/1190000021494676

https 在交换证书的时候使用的是非对称加密,在传输过程中使用的还是对称加密的方式.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【24】Word:小郑-准考证❗

目录 题目 准考证.docx 邮件合并-指定考生生成准考证 Word.docx 表格内容居中表格整体相较于页面居中 考试时一定要做一问保存一问❗ 题目 准考证.docx 插入→表格→将文本转换成表格→✔制表符→确定选中第一列→单击右键→在第一列的右侧插入列→布局→合并单元格&#…

WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测

WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测 目录 WOA-CNN-GRU-Attention、CNN-GRU-Attention、WOA-CNN-GRU、CNN-GRU四模型对比多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于WOA-CNN-GRU-Attention、…

Spring Boot整合WebSocket

目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket? ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…

K8S 集群搭建和访问 Kubernetes 仪表板(Dashboard)

一、环境准备 服务器要求: 最小硬件配置:2核CPU、4G内存、30G硬盘。 服务器可以访问外网。 软件环境: 操作系统:Anolis OS 7.9 Docker:19.03.9版本 Kubernetes:v1.18.0版本 内核版本:5.4.203-…

2024:成长、创作与平衡的年度全景回顾

文章目录 1.前言2.突破自我:2024年个人成长与关键突破3.创作历程:从构想到落笔,2024年的文字旅程4.生活与学业的双重奏:如何平衡博客事业与个人生活5.每一步都是前行:2024年度的挑战与收获6.总结 1.前言 回首2024年&a…

计算机网络 (45)动态主机配置协议DHCP

前言 计算机网络中的动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于自动分配IP地址和其他网络配置参数给连接到网络的设备。 一、基本概念 定义:DHCP是一种网络协议&#xf…

学习记录1

[SUCTF 2019]EasyWeb 直接给了源代码&#xff0c;分析一下 <?php function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir "upload/tmp_".md5($_SERVER[REMOTE_ADDR]);if(!file_exists($userdir)){mkdir($userdir);}if…

git操作(Windows中GitHub)

使用git控制GitHub中的仓库版本&#xff0c;并在Windows桌面中创建与修改代码&#xff0c;与GitHub仓库进行同步。 创建自己的GitHub仓库 创建一个gen_code实验性仓库用来学习和验证git在Windows下的使用方法&#xff1a; gen_code仓库 注意&#xff0c;创建仓库时不要设置…

Redis的安装和使用--Windows系统

Redis下载地址&#xff1a; windows版本readis下载&#xff08;GitHub&#xff09;&#xff1a; https://github.com/tporadowski/redis/releases &#xff08;推荐使用&#xff09; https://github.com/MicrosoftArchive/redis/releases 官网下载&#xff08;无Windows版本…

【odbc】odbc连接kerberos认证的 hive和spark thriftserver

hive odbc驱动&#xff0c;以下两种都可以 教程&#xff1a;使用 ODBC 和 PowerShell 查询 Apache HiveHive ODBC Connector 2.8.0 for Cloudera Enterprise spark thriftserver本质就是披着hiveserver的外壳的spark server 完成kerberos认证: &#xff08;1&#xff09;可以…

AllData数据中台核心菜单十一:数据集成平台

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨奥零数据科技官网&#xff1a;…

随遇随记篇

vue 函数 unref() 获取原始值 ref 定义的属性 需要 .value 才能拿到值&#xff0c;unref 直接返回原始值&#xff1b;若属性不是ref 定义的&#xff0c;也是直接返回原始值&#xff1b; /* description: 是否必填*/required?: boolean | Ref<boolean>.....let value …

Python操作Excel——openpyxl使用笔记(1)

0. 模块的安装 使用命令&#xff1a; pip install openpyxl 通过命令&#xff1a; pip show openpyxl 检查安装&#xff0c;当前使用的版本信息如下&#xff1a; 1. 文档的基本操作 1.1 创建&#xff0c;保存和关闭 几个简单的函数调用即可&#xff1a; import openpyx…

STM32之FreeRTOS开发介绍(十九)

STM32F407 系列文章 - freertos&#xff08;十九&#xff09; 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理 2.功能 3.特点 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是一个免费的、开源的实时操作系统&#xff0c;专为微控制器和嵌入…

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印变更的彩插

禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》

【HarmonyOS NEXT】碰一碰开发分享

关键词&#xff1a;鸿蒙、碰一碰、systemShare、harmonyShare、Share Kit 华为分享新推出碰一碰分享&#xff0c;支持用户通过手机碰一碰发起跨端分享&#xff0c;可实现传输图片、共享wifi等。我们只需调用系统 api 传入所需参数拉起对应分享卡片模板即可&#xff0c;无需对 U…

I2S是什么通信协议?它如何传输音频数据?它和I2C是什么关系?

首先我们先明确一点&#xff0c;I2S和I2C没有什么关系&#xff0c;如果非要扯点共同点的话那就是它们都是由飞利浦制定的。 I2C我们用的比较多&#xff0c;我们用的大多数的传感器模块用的通信协议就是I2C&#xff0c;SPI&#xff0c;UART这些。 而I2S应用领域比较单一&#…

ubuntu20.04有亮度调节条但是调节时亮度不变

尝试了修改grub文件&#xff0c;没有作用&#xff0c;下载了brightness-controllor&#xff0c;问题解决了。 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt update sudo apt install brightness-controller 之后在应用软件中找到brightness-contro…

Windows FileZila Server共享电脑文件夹 映射21端口外网连接

我有这样一个使用场景&#xff0c;在外部网络环境下&#xff0c;通过手机便捷地读取存储在电脑上的视频文件。比如在外出旅行、出差&#xff0c;身边没有携带电脑&#xff0c;仅依靠手机设备&#xff0c;就能随时获取电脑里存储的各类视频&#xff0c;无论是学习资料视频、工作…

怎样使用树莓派自己搭建一套ADS-B信号接收系统

0 我们知道&#xff0c;ADS-B全称广播式自动相关监视系统&#xff0c;其实就是飞机发出的广播信号&#xff0c;用明码来对外发送自己的位置、高度、速度、航向等信息&#xff0c;是公开信息。连续接收到一架飞机发出的ADS-B信息后&#xff0c;可以通过其坐标点来描绘出飞机的航…