首页 > 编程语言 >laravel使用JWT签名算法,HS256和RS256有什么区别

laravel使用JWT签名算法,HS256和RS256有什么区别

时间:2023-01-11 18:34:58浏览次数:45  
标签:laravel 公钥 JWT token 签名 HS256 data RS256


JWT签名算法中HS256和RS256有什么区别

JWT签名算法中,一般有两个选择,一个采用HS256,另外一个就是采用RS256。
签名实际上是一个加密的过程,生成一段标识(也是JWT的一部分)作为接收方验证信息是否被篡改的依据。

RS256 (采用SHA-256 的 RSA 签名) 是一种非对称算法, 它使用公共/私钥对: 标识提供方采用私钥生成签名, JWT 的使用方获取公钥以验证签名。由于公钥 (与私钥相比) 不需要保护, 因此大多数标识提供方使其易于使用方获取和使用 (通常通过一个元数据URL)。
另一方面, HS256 (带有 SHA-256 的 HMAC 是一种对称算法, 双方之间仅共享一个 密钥。由于使用相同的密钥生成签名和验证签名, 因此必须注意确保密钥不被泄密。

在开发应用的时候启用JWT,使用RS256更加安全,你可以控制谁能使用什么类型的密钥。另外,如果你无法控制客户端,无法做到密钥的完全保密,RS256会是个更佳的选择,JWT的使用方只需要知道公钥。

由于公钥通常可以从元数据URL节点获得,因此可以对客户端进行进行编程以自动检索公钥。如果采用这种方式,从服务器上直接下载公钥信息,可以有效的减少配置信息。

laravel使用JWT

public function label(Request $request)
{

$data['params'] = $request->all();


$token = request()->bearerToken();
if (!$token) {
$token = request()->header('Authorization', request()->header('authorization', ''));
}
$data['Authorization'] = $token;


$data['sign'] = JWT::encode($data, file_get_contents(resource_path('service/private.pem')), 'RS256');



$data['payload'] = JWT::decode($token, file_get_contents(resource_path('service/public.pem')), array('RS256'));



return rejson($data);
}

标签:laravel,公钥,JWT,token,签名,HS256,data,RS256
From: https://blog.51cto.com/jing/6002544

相关文章

  • LaravelAdmin中model排序字段之间比较
    LaravelAdmin中model排序字段之间比较两个字段的大小比较,把A大于B的查出来可以用  whereRaw('buyprice>productprice') 这种$price_error=isset($_GET['price_erro......
  • laravel的模型删除后动作
    <?phpnamespaceApp\Models;useDcat\Admin\Traits\HasDateTimeFormatter;//useApp\Models\OrderGoods;useIlluminate\Database\Eloquent\Model;classOrderextendsMod......
  • Laravel错误:to fillable property to allow mass assignment on
    $fillable就像是可以被赋值属性的“白名单”,还可以选择使用$guarded。$guarded属性包含你不想被赋值的属性数组。所以不被包含在其中的属性都是可以被赋值的,因此,$guarded方......
  • Laravel 第一次运行报错call to undefined function openssl cipher iv length()
    问题根源是OpenSSL扩展加载失败首先我的环境是PHP7.0+apache解决方法:1.打开你的php.ini文件开启php_openssl.dll 2.打开httpd.conf 开启modules/mod_ssl.so然后重启你......
  • laravel-admin中文汉化设置
    在config目录下面的app.php将默认语言项改为:‘locale’=>‘zh-CN’左侧的菜单栏是英文,需要在admin_menu在这个数据表中修改    ......
  • JWT
     一、JWT(JSONWebToken)JWT 结构化令牌  https://jwt.io/JWT这种结构化体可以分为 HEADER(头部)、PAYLOAD(数据体)和 SIGNATURE(签名)三部分。header.payload.si......
  • 常用功能系列---【JWT生成Token实现接口登录认证方案思路】
    JWT生成Token实现接口登录认证方案思路方案一(双token实现无感刷新)在token中,refreshToken的作用主要是避免token过期时,前端用户突然退出登录,跳转至登录页面。但是如何实......
  • DRF之JWT认证
    参考网址https://www.cnblogs.com/songhaixing/p/14698016.html权限-角色(分组)-用户默认情况下,校验用户名/密码和签发jwt的逻辑已经写好默认只返回token我......
  • Docker基础知识 (23) - 使用 Docker 部署 Nginx + Php/Laravel + MariaDB 项目 (2) -
    本文在“Docker基础知识(12)-使用Docker部署Nginx+Php/Laravel+MariaDB项目”基础上,修改Nginx的配置文件和docker-compose.yml,配置phpMyAdmin目录密码保......
  • laravel Redis sentinel config
    'default'=>['tcp://11.11.11.11:26379','tcp://11.11.11.11:26381','tcp://11.11.11.11:26382',//这3个都是sentinel节点......