`

数据令牌的传递的生成、验证和解析

    博客分类:
  • PHP
阅读更多
<?php

function base64UrlDecode($input)
{
	return base64_decode(strtr($input, '-_', '+/'));
}
function base64UrlEncode($input)
{
	return base64_encode(strtr($input, '+/', '-_'));
}

// 生成令牌
function parseSignedRequest($signed_request, $secret='4f5fcdc6514f7ee25ec4fa7c7853e8e1') 
{
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);

	// decode the data
    $sig = base64UrlDecode($encoded_sig);
    $data = json_decode(base64UrlDecode($payload), true);

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') 
	{
      die('Unknown algorithm. Expected HMAC-SHA256');
      return null;
    }

    // check sig
    $expected_sig = hash_hmac('sha256', $payload,$secret, $raw = true);
    if ($sig !== $expected_sig) 
	{
      die('Bad Signed JSON signature!');
      return null;
    }

    return $data;
}

// 解析
function generateSignature($info,$secret='4f5fcdc6514f7ee25ec4fa7c7853e8e1')
{
	$body = base64UrlEncode(json_encode(($info)));
	$sign = hash_hmac('sha256', $body,$secret,true);

	$signed_request = base64UrlEncode($sign) . "." . $body;

	return $signed_request;
}

$info = array(
	'algorithm'=> 'HMAC-SHA256',
	"userId" => 'aaa',
	'userName' => 'asdsad',
	'sex' => '1'
);

print_R(parseSignedRequest(generateSignature($info)));

?>

分享到:
评论

相关推荐

    .NET Core 生成JWT令牌源码

    .NET Core JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它是一种轻量级的安全令牌,用于在不同的应用...该库提供了一些类和方法,用于生成和验证JWT令牌。可以使用SymmetricSecurityKey或AsymmetricSecu

    Spring cloud Oauth2的密码模式使用JWT方式实现登录验证授权

    这包括创建一个OAuth2配置类,定义授权码流程,并设置JWT令牌的生成和解析。JWT的生成通常使用如`jjwt`库,它可以自动生成包含用户信息的JWT令牌。 在用户登录时,客户端收集用户输入的凭证,然后向授权服务器发起...

    REST2SQL11 基于jwt-go生成token与验证

    如果解析和验证成功,我们可以从`claims`结构体中获取用户信息。 在实际应用中,你可能还需要处理刷新令牌、撤销令牌或在数据库中存储和检查令牌的有效性等问题。`jwt-go`库提供了足够的灵活性来处理这些复杂情况。...

    jwt-gen:基于密钥和到期时间的简单JWT令牌生成器

    签发时,开发者可以指定密钥、过期时间和载荷数据,生成的令牌可以安全地传递给客户端。验证时,服务器接收客户端传来的令牌,使用相同的密钥进行验证,并检查是否已过期。 在实际开发中,理解JWT的工作原理和如何...

    Spring Boot项目之用户登陆-利用用户令牌Token的方式实现

    在Spring Boot项目中,用户登录通常涉及到身份验证和授权的过程,而令牌(Token)机制是实现这一过程的有效方法。本文将深入探讨如何在Spring Boot应用中利用令牌Token来实现用户登录功能。 首先,理解Token的基本...

    轻量级单点登录系统源码.zip

    单点登录(Single Sign-...总结,轻量级单点登录系统源码的解析和实践有助于开发者掌握SSO的实现原理,提升系统安全性,并优化用户体验。对于开发人员来说,理解和应用这些技术对构建高效、安全的多应用环境至关重要。

    最新巨量算数(X-Bogus、-signature、msToken)参数加密分析结果(1.0.0.22)

    X-Bogus、_signature和msToken是三个关键的参数,它们很可能涉及到网络请求的身份验证和数据完整性检查。在Web开发中,这样的参数通常用于防止中间人攻击,确保请求的合法性,并且保护用户的数据不被篡改。 首先,X...

    jjwt-0.11.5 jackson-2.13.3

    2. **jackson-core-2.13.3.jar**:基础核心模块,包含了JSON解析和生成的基本功能,如流式API,以及对基本JSON结构(如令牌、事件)的处理。 3. **jackson-annotations-2.13.3.jar**:包含了一组注解,这些注解可以...

    Android服务器端与客户端的数据交互

    3. **JSON 数据格式**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Android应用中,常用Gson或Jackson库将Java对象转换为JSON字符串进行传输,...

    apollo-graphql-express-objection-server:具有JWT身份验证并使用Objection.js ORM自动生成GQL架构类型和解析器的GraphQL(Apollo)Express服务器

    它结合了Express、Apollo Server、Objection.js ORM和JWT身份验证,提供了一种优雅的方式,用于创建自动生成GraphQL模式类型和解析器的后端服务。 首先,让我们深入了解每个组件的作用: 1. **Express**:这是一个...

    Java_这个存储库是用来分享我博客文章的源代码的,我在博客文章中解释了如何使用JSON web tokensJWT为.zip

    签名则是通过头部、载荷和一个密钥进行哈希运算生成,用于验证令牌的完整性和来源。 在Java中,我们可以使用如jjwt或nimbus-jose-jwt这样的库来处理JWT的生成和验证。以下是一些基本操作的步骤: 1. **生成JWT**:...

    node-token-auth-jwt:Node.js应用程序,其中包含使用JWT进行基于令牌的身份验证的示例

    此库提供了创建、解析和验证JWT的功能。 2. **生成令牌**: 在用户成功登录后,服务器会生成一个JWT并返回给客户端。这个过程包括设置过期时间、定义载荷信息(如用户ID)并使用一个秘密字符串(secret)进行签名。 ...

    jwt在线解密网站,可用于jwt的解码

    这种信息可以被验证和信任,因为它是数字签名的。JWT被广泛用于身份验证和授权场景,例如API认证、单点登录(SSO)等。 JWT由三个部分组成: 1. **Head头部**:这是一个JSON对象,包含了JWT的元数据,通常包括JWT...

    spring security oauth2 单点登录

    在资源服务器的配置中,你需要指定令牌验证器(TokenAuthenticationService)和访问令牌解析器(AccessTokenConverter),以便能够正确地解析和验证来自认证服务器的令牌。 3. **单点登录流程** - 用户尝试访问...

    EdgeAuth:Phenix EdgeAuth摘要令牌

    总的来说,Phenix EdgeAuth摘要令牌是实时视频流服务安全策略的关键组成部分,通过强大的哈希加密技术和SDK支持,为开发者提供了一种高效且安全的认证解决方案,确保了实时视频流内容的访问控制和数据安全。...

    .netMvc JWT身份验证

    总的来说,JWT身份验证在.NET MVC中提供了安全的身份验证和授权机制,它通过生成和验证JSON Web Tokens,使得用户信息可以在多个微服务之间传递,而无需在每个请求中重新验证用户。使用NuGet包管理器安装JWT库,并...

    Laravel开发-illuminate-json-guard

    - 定义自定义的JWT解析和验证规则。 - 自定义认证失败时的错误响应。 - 创建自己的用户提供者,从不同的数据源(如数据库、OAuth服务)获取用户信息。 ### 总结 `illuminate/json-guard`组件是Laravel/Lumen框架中...

    Python库 | itsdangerous-0.15.tar.gz

    1. Web令牌:itsdangerous常用于生成和验证JWT,如在用户认证、API调用授权等场景。 2. 邮件确认链接:在用户注册或忘记密码时,可以生成一个带有签名的URL,确保用户点击的链接有效且未被篡改。 3. 消息队列:在...

Global site tag (gtag.js) - Google Analytics