18.jwt加密
jwt 官网https://jwt.io/
jwt:json web token
jwt-simple: https://www.npmjs.com/package/jwt-simple
jsonwebtoken:https://www.npmjs.com/package/jsonwebtoken
express-jwt : https://www.npmjs.com/package/express-jwt
安装:
cnpm i -S jwt-simple
JWT的结构
JWT包含了使用.分隔的三部分: Header 头部 Payload 负载 Signature 签名
其结构看起来是这样的Header.Payload.Signature
传输方式:
1、get
2、post
3、headers
headers:{
Authorization: `Beare ${token}`
}
获取 req.headers["authorization"]
核心:base64
1、编码 Buffer.from(str/buffer).toString("base64");
2、解码 Buffer.from(str/buffer,"base64").toString();
exp1:
jwt-simple使用
jwt.js
1、
const jwt = require ("jwt-simple");
let payload = {username:"aaa"};
const secret = "secret";
const token = jwt.encode(payload,secret);
console.log("jwt toekn",token);
var decoded = jwt.decode(token,secret);
console.log(decoded);
2、
const jwt = require ("jwt-simple");
let payload = {username:"aaa"};
const secret = "secret";
let token = jwt.encode(payload,secret);
console.log("jwt toekn","|"+token+"|");
//token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybddmFtZSI6ImFhYSJ9.fTx6_s9QbdddSyt5zXqtdqBqmwIdmoN9ju0f8dpOf5oPlc ";
token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFhYSJ9.fTx6_s9QbSyt5zXqtdqBqmwIdmoN9ju0f8dpOf5oPlc"
var decoded = jwt.decode(token,secret);
console.log(decoded);
base64:
图片转base64:
const fs = require("fs");
let data = fs.readFileSync("1.png");
let base64 = Buffer.from(data).toString("base64");
console.log(base64);
转base64:
let secret = "secret";//c2VjcmV0
let base64 = Buffer.from(secret).toString("base64");
console.log(base64);
解base64:
let base64 = "c2VjcmV0";// secret
let secret = Buffer.from(base64,"base64").toString();
console.log(secret);
自己写jwt=> myjwt.js
const crypto = require("crypto");
const jwt = {
encodeBase64(str){
return Buffer.from(str).toString("base64");
},
decodeBase64(str){
return Buffer.from(str,"base64").toString();
},
//编码
encode(payload,secret){
let header = {"typ":"JWT","alg":"HS256"};
let headerBase64 = this.encodeBase64(JSON.stringify(header));
let payloadBase64 = this.encodeBase64(JSON.stringify(payload));
let sign = this.sign([headerBase64,payloadBase64].join("."),secret);
return [headerBase64,payloadBase64,sign].join(".");
},
//解码
decode(token,secret){
let [header,payload,sign] = token.split(".");
return JSON.parse(this.decodeBase64(payload));
},
sign(str,secret){
return crypto.createHmac("sha256",secret).update(str).digest("base64");
}
}
let payload = {username:"aaa"};
let secret = "secret";
let token = jwt.encode(payload,secret);
console.log(token);
payload = jwt.decode(token,secret);
console.log(payload);
18.jwt加密的更多相关文章
- JWT加密解密
如何保证WebAPI的安全?1.JWT加密解密.token2.使用https传输协议.3.把用户所有请求的参数信息加上一个只有服务器端知道的secret,做个散列运算,然后到了服务器端,服务器端也做一 ...
- JWT 加密
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- 把旧系统迁移到.Net Core 2.0 日记 (18) --JWT 认证(Json Web Token)
我们最常用的认证系统是Cookie认证,通常用一般需要人工登录的系统,用户访问授权范围的url时,会自动Redirect到Account/Login,登录后把认证结果存在cookie里. 系统只要找到 ...
- JWT加密
JWT是一种加密算法,为了防止请求的信息在传输途中被拦截修改 JWT的引用: install-package jwt JWF由三部分组成:Header,Payload,Signature Payloa ...
- JWT加密解密方法
public static string Key { get; set; } = "123456789987654321";//解密串 /// <summary> // ...
- jwt 简单基本使用加密解密
import jwt # 加密 encode_jwt=jwt.encode({'uid':'123'},'密钥123',algorithm='HS256') print(encode_jwt) # 解 ...
- 关于 IdentityServer4 中的 Jwt Token 与 Reference Token
OpenID Connect(Core),OAuth 2.0(RFC 6749),JSON Web Token (JWT)(RFC 7519) 之间有着密不可分联系,对比了不同语言的实现,还是觉得 I ...
- spring集成jwt验证方式,token验证
为什么要告别session?有这样一个场景,系统的数据量达到千万级,需要几台服务器部署,当一个用户在其中一台服务器登录后,用session保存其登录信息,其他服务器怎么知道该用户登录了?(单点登录), ...
- Dubbo学习系列之九(Shiro+JWT权限管理)
村长让小王给村里各系统来一套SSO方案做整合,隔壁的陈家村流行使用Session+认证中心方法,但小王想尝试点新鲜的,于是想到了JWT方案,那JWT是啥呢?JavaWebToken简称JWT,就是一个 ...
随机推荐
- Xposed 框架 hook 简介 原理 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- js格式化格林威治时间
格式化时间:Sat Aug 05 00:00:00 CST 2017 function fermitTime(time){ var now = new Date(time); var year = n ...
- c++中POD类型和non-POD类型
对于一个array来说: For POD-types, a shallow copy or memcpy of the whole array is good enough, while for no ...
- ionic 状态栏显示异常 statusBar
从主分支上新建一个分支开发另一个app, 生成之后手机上显示状态栏异常, 如下图, 只显示了电池的色块, 百思不得其解啊. 各种猜测无果, 对比config.xml, 发现statusBar插件版本不 ...
- python conv2d scipy卷积运算
scipy的signal模块经常用于信号处理,卷积.傅里叶变换.各种滤波.差值算法等. *两个一维信号卷积 >>> import numpy as np >>> x ...
- JS 日期补0
js日期需要yyyy-mm-dd的时候只显示yyyy-m-d,需要前面补充0,之前都是用的判断,感觉非常low.刚刚看到一个方法padStart用了用还不错,padStart是为数值补全指定位数,对应 ...
- 重读redis设计与实现
重读了一遍redis设计与实现,这次收获也不错,把之前还有些疑惑的点:redis跳跃表的原理.redis持久化的方法.redis复制.redis sentinel.redis集群等,都重新熟悉了一遍, ...
- 凭什么相信你,我的CNN模型
背景 学术界一直困惑的点是"如何让看似黑盒的CNN模型说话",即对它的分类结果给出解释. 这里的解释是指,让模型告诉我们它是通过图片的哪些像素做出判断的,并不是深度学习理论层面的解 ...
- 【iCore4 双核心板_ARM】例程二十六:LWIP_MODBUS_TCP实验——电源监控
实验现象: 核心代码: int main(void) { system_clock.initialize(); led.initialize(); adc.initialize(); delay.in ...
- Linux文件属性有哪些?(共十位)
-rw-r--r-- 那个是权限符号,总共是 - --- --- --- 这几个位. 第一个短横处是文件类型识别符: - 表示普通文件: c 表示字符设备(character): b 表示块设备(bl ...