4种加密方式
1.1 MD5加密
md5加密 是目前最安全有效的加密方式,因为它是单项不可逆的(加密之后是无法还原的),md5加密方式不是js内置的API,需要使用插件实现。所以使用之前需要引入md5加密插件。所有类型的文件和不同大小格式的数据进行md5加密后,都是一个长32位的16进制字符串。
md5引入时必须放在public里,才可以引入不报错
1.2 base64加密
base64加密 是一种常见的加密方式,没有md5安全,因为它是双向可解密的。base64加密方式不是js内置的API,需要使用插件实现。所以使用之前需要引入base64加密插件。
-
Base64.encode(array):加密
-
Base64.decode(array):解密
array = Base64.encode(array);
array = Base64.decode(array);
1.3 URL 加密
URL加密 是一种网络请求中常用的加密方式,双向可解密,不安全,一般用于汉字加密。URL加密方式是js内置API。
-
encodeURI(array):加密
-
decodeURI(array):解密
array = decodeURI(array);
array = encodeURI(array);
1.4 JSON编码解码
JSON编码解码 是一种数据类型的转化方式,常用于对象 数组的编码解码。JSON编码也是js内置API,不需要插件。
array = JSON.stringify(array);
array = JSON.parse(array);
总结:四种加密和编码方式的用途
-
md5:一般用于密码或敏感信息的加密
-
base64:一般用于大型文件和图片的加密
-
url编码:网络请求信息中的汉字加密
-
JSON编码:用于网络响应数据的解析
编写登录注册接口
1,搭建服务器
index.js这个文件是服务器的启动文件,使用node运行这个文件就可以启动服务器了
var express=require("express");
var app = express();
app.use(express.static("public"))
app.listen(5000,function(){
console.log("服务器已启动,请访问5000端口");
2,在index.js文件种写入get/post请求接口
2.1监听get方式:
-
app.get(路径,回调函数(request,response){}) 回调中有两个参数:请求对象和响应对象
-
request(请求对象):浏览器发给服务器的数据对象 ,简写req
-
response(响应对象):服务器返回给浏览器的数据对象,简写res
get方式请求的数据存放在query字段中!(request.jquery)
注意:1,服务器需要做出响应,客户端才能拿到结果
2,只要服务器代码修改之后需要重新启动服务器才能生效
3,向服务器发送一次请求必须给浏览器一次响应,不然就是一直在等待响应
// 监听get方式的登录请求
app.get('/login', function(request, response) {
// 回调中有两个参数:请求对象和响应对象
// request请求对象:浏览器发送给服务器的数据对象 简写req
// response响应对象:服务器返回给浏览器的数据对象 简写res
// get请求的数据存放在query字段中
console.log(request.query);
// 服务器需要做出响应,客户端才能拿到结果
response.send('恭喜你,登录成功');
// 主要服务器代码修改之后需要重启服务器才能生效
2.2 监听post方式
post方式请求的数据在请求体中需要一个解析器解析出来,使用解析器解析post请求体数据,解析到req.body字段中!
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }))
// 监听post方式的登录请求
// post请求的数据在请求体中需要一个解析器解析出来
var bodyParser = require('body-parser');
// 使用解析器解析post请求体数据,解析到req.body字段中
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/login', function(req, res) {
// post请求的数据是在请求体中会被解析到body字段中,
console.log(req.body);
//使用send函数响应字符串
// res.send('注册成功')
// 使用json函数响应对象
// res.json({
// msg: '恭喜你登录成功'
// })
if (!req.body.username || !req.body.password) {
res.json({ msg: "账号或密码不能为空" })
return; //响应后不会结束,可使用return结束
// 读取userinfo目录下所有账号,如果存在,再判断密码是否正确,如果不存在,登录失败
fs.readdir("./public/userinfo", function(err, arr) {
if (err) {
res.json({ msg: "系统错误,请重试" });
return;
var name = arr.find(item => {
return item == req.body.username
if (name) {
var path = "./public/userinfo/" + req.body.username
fs.readFile(path, "utf8", function(err, data) {
if (data == req.body.password) {
res.json({ msg: "登陆成功" })
} else {
res.json({ msg: "密码错误" })
} else {
res.json({ msg: "用户不存在,登录失败" })
2.2.1服务器给浏览器返回数据的两种方式:
res.send('注册成功')//如果html中用get请求方式打印回调函数的第一个参数data,那么data就是注册成功这个字符串
res.json({
msg: '恭喜你登录成功'
2.2.2 同源请求可以省略协议+IP+端口号
$.get('http://localhost:5000/login',{
如果当前网页的打开的url和ajax请求的url中协议,域名,ip,端口都相同,叫同源,这个ajax请求叫同源请求,对于同源请求可以省略协议,ip,端口
2.3注册接口代码
注册接口的思路:
1,先判断html发送请求的数据是否为空。如果为空,服务器就给浏览器发送 账号或密码不能为空 的响应。
2,不为空,读取userinfo的所有账号,如果跟存在就注册失败,没有账号就注册成功
// 注册接口
app.post('/register', function(req, res) {
console.log(req.body);
if (!req.body.username || !req.body.password) {
res.json({ msg: "账号或密码不能为空" })
return; //响应后不会结束,可使用return结束
// 读取userinfo目录下所有账号,如果存在,就注册失败,没有账号就注册成功
fs.readdir("./public/userinfo", function(err, arr) {
var result = arr.some(item => {
return item == req.body.username + ".txt"
if (result) {
res.json({ msg: "注册失败,用户名已存在" })
} else {
var path = "./public/userinfo/" + req.body.username;
fs.writeFile(path, req.body.password, () => {})
res.json({ msg: "注册成功" })
登录注册的前端页面:
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script>
$.get('http://localhost:5000/login', {
username: '马万祺',
password: 123
}, function(data) {
console.log(data);
$.post('/login', {
username: '小明',
password: 123
}, function(data) {
console.log(data);
$.post('/register', {
username: '',
password: ''
}, function(data) {
console.log(data);
</script>
注意: node项目中根目录属于服务器后端环境,public目录属于前端资源环境。public中的网页不能引用public外的数据和资源,只能引用public内部的数据资源。而index.js可以引入public内部资源
前几天写过一篇可以获取到百度跳转之后的网址的文章,在百度了一下,有人也研究过百度link?url=的。 大概得出如下结果: 1、加密方式根据:随机+输入停留时间+快照地址进行加密 2、整个代码中应该有三个部分:1、搜索词的时间;2、搜索的关键词;3、随机生成的唯一性标识代码。 3、在任何环境或浏览器下 url=最后有一段相似的代码 从以上别人研究的结果可以知道,“最后有一段相似的代码”是比较可用的,于是先从此入手。 我搜索“enenba” 发现,我的第一个搜索结果的URL都有一段代码是相同的,那就是 http://www.baidu.com/link?url=…………ebac5573358cc
数字签名、信息加密 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法 来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。
1. 数字签名
数字签名,简单来说就是通过提供 可鉴别 的 数字信息 验证 自身身份 的一种方式。一套 ...
加密功能:安企神软件支持透明加密和智能加密技术,可以对新保存的文件进行自动加密处理,确保文件在存储和传输过程中的安全性。同时,它还提供了精细的权限管理功能,允许管理员为不同用户或用户组分配文件的访问、编辑、复制、打印、外发等权限。此外,安企神软件还提供了强大的审计功能,能够实时监控员工在文件上的操作行为,及时发现并阻止潜在的安全威胁。加密功能:用户自定义设置密码后,软件会对选中的文件和文件夹进行加密处理。简介:金舟文件夹加密大师是一款专业的文件夹加密软件,支持一键批量导入文件和文件夹进行加密。
以前写文章总喜欢先废话一堆,这次就免了,直入主题。
加 密算法通常分为对称性加密算法和非对称性加密算法,对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行 加解密了。非对称算法与之不同,发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙...
哈喽,大家好呀!这里是码农后端。本篇将带你了解一些常见的密码加密方式。毋庸置疑,密码的安全性对于用户来说是非常重要的,如何保证密码的安全性使其不被破解也是一直以来的一个非常重要的话题。1、密码加密方式1.1 明文密码最初,密码以明文形式存储在数据库中。但是恶意用户可能会通过SQL注入等手段获取到明文密码,或者也可能发生程序员将数据库数据泄露的情况。1.2 Hash算法Spring Security...
随着科技的不断发展进步,人们对数据安全越来越重视,为了保障数据安全,很多领域都需要数据加密。那么,常见的加密方式有哪几种呢?本文将分享目前常见的几种加密方式,以及这些加密方式具有哪些优缺点,适用于哪些场景等。感兴趣的朋友可以继续往下看。...
加密技术
加密技术大体上分为 双向加密 和 单向加密 ,而双向加密又分为 对称加密 和非对称加密。
双向加密即明文加密后形成的密文,可以通过逆向算法还原出明文。而单向加密只是对信息进行了摘要计算,不能通过算法逆向生成明文。
单向加密从严格意思上说不能算是加密的一种,而只是摘要算法,常见的单向加密技术有BASE64(一种编码形式)、MD5、SHA、HMAC(消息认证码)。
双向加密技术可以分为 对称加密 与 非对称加密 两种。
(1)对称加密:即加密与解密用的是同一把秘钥,常用的对称加密技术有DES、AES等
需求场景如图:
为了访问资源文件,用户需要首先访问某一台Frontend Server进行用户身份认证———所有的用户信息均由Frontend Server保存,Frontend Server认证通过后返回真实的重定向地址,用户再根据重定向地址访问Resource Se...
数据加密方式有:1、单向加密;2、对称加密;3、非对称加密;4、加密盐;5、散列函数;6、数字签名。其中,通过对数据进行摘要计算生成密文,密文不可逆推还原。只能加密,不能解密,常用于提取数据的指纹信息以此来验证数据的完整性。
【文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥】
解释: 在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。
优点: 对称加密算法的优