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. Mysql取随机数据效率测试(200W条中读取100条)

    第一种方案: SELECT * FROM `follow_record` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(record_id) FROM ...

  2. java调用sap的webservice(需要登录验证)

    1.Base64.java /* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache ...

  3. getParameter() getInputStream()和getReader() 区别 这三种方法是有冲突的,因为流只能被读一次。

    我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter()request.getInputStream()req ...

  4. 图解 Git

    https://juejin.im/entry/5917c463da2f60005de84195

  5. 【Boost】boost::string_algo详解2——find相关函数

    来自: https://blog.csdn.net/huang_xw/article/details/8276123 函数声明:   template<typename Range1T, typ ...

  6. MyBatis中使用实体中使用枚举,数据库中使用数值

    一.简介 本文主要讲MyBatis中使用实体中使用枚举,数据库中使用数值的解决方案.正常直接使用会报错,需要添加typeHandlers在mybatis-config.xml中. 二.解决方案 如下: ...

  7. wait-for

    Use a tool such as wait-for-it, dockerize, or sh-compatible wait-for. These are small wrapper script ...

  8. 尝试IRC & freenode

    古老的 IRC,一直都没有试过,今天就尝试了一下,专注于聊天的东西啊. 把初用的过程记录下来 先找了一下客户端,命令行版本的我试了一下 weechat(和微信就差一个字母),图形的用了 TimeCha ...

  9. ELK 6.X 版本下xpack破解

    ELK 6.2.2 版本下xpack破解 1.下载xpack 先下载最新版本的 x-pack,里面包含了 es,kibana,logstash 新版本的x-pack 下载地址:https://arti ...

  10. 单片机成长之路(51基础篇) - 022 N76e003 APROM模拟EEPROM驱动

    N76e003单片机内部没有EEPROM,但是可以使用 APROM模拟EEPROM功能,代码如下: eeprom.h #ifndef _EEPROM_H_ #define _EEPROM_H_ //E ...