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加密的更多相关文章

  1. JWT加密解密

    如何保证WebAPI的安全?1.JWT加密解密.token2.使用https传输协议.3.把用户所有请求的参数信息加上一个只有服务器端知道的secret,做个散列运算,然后到了服务器端,服务器端也做一 ...

  2. JWT 加密

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  3. 把旧系统迁移到.Net Core 2.0 日记 (18) --JWT 认证(Json Web Token)

    我们最常用的认证系统是Cookie认证,通常用一般需要人工登录的系统,用户访问授权范围的url时,会自动Redirect到Account/Login,登录后把认证结果存在cookie里. 系统只要找到 ...

  4. JWT加密

    JWT是一种加密算法,为了防止请求的信息在传输途中被拦截修改 JWT的引用: install-package jwt JWF由三部分组成:Header,Payload,Signature Payloa ...

  5. JWT加密解密方法

    public static string Key { get; set; } = "123456789987654321";//解密串 /// <summary> // ...

  6. jwt 简单基本使用加密解密

    import jwt # 加密 encode_jwt=jwt.encode({'uid':'123'},'密钥123',algorithm='HS256') print(encode_jwt) # 解 ...

  7. 关于 IdentityServer4 中的 Jwt Token 与 Reference Token

    OpenID Connect(Core),OAuth 2.0(RFC 6749),JSON Web Token (JWT)(RFC 7519) 之间有着密不可分联系,对比了不同语言的实现,还是觉得 I ...

  8. spring集成jwt验证方式,token验证

    为什么要告别session?有这样一个场景,系统的数据量达到千万级,需要几台服务器部署,当一个用户在其中一台服务器登录后,用session保存其登录信息,其他服务器怎么知道该用户登录了?(单点登录), ...

  9. Dubbo学习系列之九(Shiro+JWT权限管理)

    村长让小王给村里各系统来一套SSO方案做整合,隔壁的陈家村流行使用Session+认证中心方法,但小王想尝试点新鲜的,于是想到了JWT方案,那JWT是啥呢?JavaWebToken简称JWT,就是一个 ...

随机推荐

  1. CoordinatorLayout使用详解: 打造折叠悬浮效果

    1.简介 CoordinatorLayout遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 ...

  2. Coursera机器学习+deeplearning.ai+斯坦福CS231n

    日志 20170410 Coursera机器学习 2017.11.28 update deeplearning 台大的机器学习课程:台湾大学林轩田和李宏毅机器学习课程 Coursera机器学习 Wee ...

  3. 20170814 新鲜:EChart新增了日历图,要想办法用起来

    比如我可以用下面这个图来展示某个电站的年报,看他之后一年每一天的发电量.  或者是在月报的时候看这个月每天的发电量.这个最妙的时候,他可以通过旁边的图例来筛选,从而产生一个动态的效果.   还有可以在 ...

  4. gitbook安装与使用,并使用docker部署

    本文简单介绍如何安装并使用gitbook,最后如何使用docker构建书籍镜像. 1. 前置条件 需要Nodejs环境,安装npm,国内用户再安装cnpm npm install -g cnpm -- ...

  5. 解决Android Studio出现Failed to open zip file. Gradle's dependency cache may be corrupt的问题

    问题如下图所示: 解决: 修改 gradle-wrapper.properties里的gradle的版本,与之前没有报错的gradle版本一致.就可以了 比如我报这个错的时候 : distributi ...

  6. 用于Spring Boot Jar部署的shell脚本

    用于在Jenkins将jar发送到目标节点之后的部署操作, 包含deploy, start, stop, restart功能. 在deploy时会自动备份原jar至指定目录 # Please defi ...

  7. bootstrap table 的简单Demo

    暂时够用,不够用再补充 T_T script: <link rel="stylesheet" href="lib/bootstrap.min.css"&g ...

  8. linux驱动(续)

    网络通信 --> IO多路复用之select.poll.epoll详解 IO多路复用之select.poll.epoll详解      目前支持I/O多路复用的系统调用有 select,psel ...

  9. 戳破ZigBee技术智能家居的谎言!

    戳破ZigBee技术智能家居的谎言 一.ZigBee介绍 简介 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷.对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂, ...

  10. 【小工具】根据定义的白名单字段进行Bean的拷贝

    背景 Bean的拷贝一直有一些类可以使用,比如Apache的org.apache.commons.beanutils.BeanUtils或者Spring的org.springframework.bea ...