为什么忘记密码后需要重置,而不是告诉原密码?

关于忘记密码重置问题,在面试时经常被问到。这道面试题大家在生活中大部分都亲身经历过。注册了某个网站,过一段时间不用,重新登录时,忘记了密码,点击找回密码功能,进行身份验证后,要求重置密码。为什么网站不直接返回原始密码给我们呢?

其实网站本身也不知道原始密码,在网站后台数据库中只记录你注册时原始密码加密后的密文,而密文是不可逆的,也就是密文不能还原回明文密码。

相信经常关注新闻的同学应该知道,国内某大型技术社区,数据库服务器被黑客攻破,所有注册用户的账户名和密码被晒到网上,密码只进行了简单的对称加密,很容易就被破解。据说某个大v的账户破解后里面的内容被篡改。 如果是不可逆加密,即使数据库被攻破密码被看到,也是无法使用账户进行登录操作。

面试官继续追问:你知道加密算法有哪些吗?能否详细说明?

认真看完这篇文章系统告诉你加密相关知识。

01

加密概述

加密是一种将明文信息转换为只有授权用户才能解读的密文信息的过程。它在信息安全领域扮演着至关重要的角色,用于保护数据的机密性、完整性和可用性。

  • 密码常用术语

        明文: 待加密码信息

        密文: 经过加密后的明文

        加密: 明文转为密文的过程

        加密算法: 明文转为密文的转换算法

        加密密钥: 通过加密算法进行加密操作用的密钥

        解密: 将密文转为明文的过程

        解密算法: 密文转为明文的算法

        解密密钥:通过解密算法进行解密操作用的密钥

  • 现代密码学设计原则

        柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全取决于密钥,对密钥          保密,对算法公开。

02

加密算法

常用加密算法有对称加密、非对称加密和哈希不可逆加密。它们在什么场景下使用,具体代码使用方法是什么,我们来一起看下。

  • 对称加密

        指加密和解密使用相同密钥的加密算法。对称加密算法的原理很容易理解,通信一方用KEY         加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。

常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

缺点: 没有非对称加密安全.

用途:一般用于保存用户手机号、身份证等敏感但能解密的信息。

示例-crypto.js库


<script src="./lib/js/crypto-js.js"></script>
<script>
//Encrypt加密
var message='2042.12.12 14:10攻打海湾'
var key='cdkey'//秘钥
var ciphertext=crypo]s.AEs.encrypt(message, key).tostring();
//U2FsdGVkX18AztWSDj0grGvTCpa0HquP1CSM7G9E/1Yd7u4VvM5+yLFkhfWcas/N
// Decrypt 解密
var bytes =cryptoJs.AEs.decrypt(ciphertext, key);var originalText=bytes.tostring(cryptojs.enc.Utf8);
console.log(originalText);//'2042.12.12 14:10攻打海湾'
</script>
  • 非对称加密

        非对称加密算法,使用两把完全不同但又是完全匹配的一对Key:公钥和私钥。在使用非对称         加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程

优点:  非对称加密与对称加密相比,其安全性更好;

缺点: 非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

用途:一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用 于对于令牌或者签名的解密或者校验使用.

常见的非对称加密算法有:RSA、DSA(数字签名用)、ECC(移动设备 用)、RS256 (采用SHA-256 的 RSA 签名)

规则:公钥加密,私钥解密

RSA加密实现

1. RSA秘钥生成方式

Mac系统内置OpenSSL(开源加密库),所以可以直接在终端上使用命令。

Windows系统可以使用git命令行工具单击鼠标右键——git bash here 调出git bash

1、生成私钥,密钥长度为1024bit

$ openssl genrsa -out private.pem 1024

2、 从私钥中提取公钥

$ openssl rsa -in private.pem -pubout -out public.pem

3、命令行查看

4、RSA在线生成:http://tools.jb51.net/password/rsa_encode

5、rsa加解密库jsencrypt 

方式1 引入 <script src="../lib/js/JSEncrypt.js"></script>

方式2 npm install jsencrypt

  • 哈希不可逆加密

Hash算法特别的地方在于它是一种单向算法,一旦加密就不能反向解密得到密码原文。常用在不可还原的密码存储、信息完整性校验等。

1. 常见的不可逆加密算法有:MD5、SHA、HMAC

2. 使用方式:在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。

3. SHA算法: 安全散列算法(英语:Secure Hash Alqorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。

4. js-sha256库

npm i  js-sha256

03

base64算法

对网络通信有所了解的同学,应该都听过Base64编码。例如,我们一段数据通过MD5 、SHA等手段加密后,经过Base64编码为字符串就可以很方便地在网路上传输。那么Base64也算是一种加密算法吗?

Base64并不是一种加密方式,明文使用Base64编码后的字符串通过索引表可以直接还原为明文。因此,Base64只能作为一种数据的存储格式

Base64实现:


//安装 npm install js-base64
const Base64 = require("js-base64").Base64 
const pw = Base64.encode(this.passWord)

在线编译工具:http://www.jsons.cn/img2base64/

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Windows 上忘记密码后,有几种方法可以重置密码。下面是一些常用的方法: 1. 使用另一个管理员账户重置密码:如果你有另一个具有管理员权限的账户,你可以使用该账户登录并重置忘记密码的账户的密码。在登录到管理员账户后,你可以通过控制面板或计算机管理工具来更改密码。 2. 使用重置磁盘:如果你之前创建了密码重置磁盘,你可以使用该磁盘来重置密码。在登录屏幕上,点击“重置密码”链接,然后按照向导的指示使用重置磁盘来设置新密码。 3. 使用安全模式重置密码:进入安全模式通常会让你能够访问隐藏的管理员账户,并使用该账户来重置忘记密码的账户的密码。进入安全模式后,你可以使用“控制面板”或“计算机管理工具”来更改密码。 4. 使用重置工具:有一些第三方工具可以帮助你重置 Windows 密码,例如 Offline NT Password & Registry Editor、PCUnlocker 等。这些工具通常需要创建一个可启动的 USB 或 CD/DVD 来运行,并按照指示进行密码重置。 请注意,在进行任何密码重置操作之前,确保你了解并遵守法律和隐私规定。另外,如果你是使用公司或组织提供的计算机,最好先与系统管理员联系,以确保你可以合法地重置密码。 如果你对上述方法不熟悉或不确定如何操作,建议寻求专业人士的帮助,例如计算机技术支持人员或专业的电脑维修服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

missterzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值