zoukankan      html  css  js  c++  java
  • firebase/php-jwt使用openssl实现 RSA非对称加密

    最近在使用PHP 中 firebase/php-jwt ,需要选择加密算法,选择了RSA算法,需要使用openssl来生成密钥。把生成方式使用记录下来。

    简单定义:公钥和私钥,加密和解密使用的是两个不同的密钥,所以是非对称

    系统:ubuntu 18.04

    软件:openssl java php

    生成公钥私钥

    使用命令生成私钥:

    openssl genrsa -out rsa_private_key.pem 1024
    

      

    参数:genrsa 生成密钥   -out 输出到文件  rsa_private_key.pem 文件名  1024 长度

    从私钥中提取公钥:

    openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
    

    参数: rsa 提取公钥  -in 从文件中读入  rsa_private_key.pem 文件名   -pubout  输出   -out 到文件  rsa_public_key.pem  文件名

    使用openssl加解密:

    新建一个readme.txt 内容是taoshihan

    使用公钥加密:

    openssl rsautl -encrypt -in readme.txt -inkey rsa_public_key.pem -pubin -out hello.en
    

      

    参数: rsautl 加解密  -encrypt 加密  -in 从文件输入  readme.txt 文件名  -inkey  输入的密钥  rsa_public_key.pem  上一步生成的公钥  -pubin 表名输入是公钥文件  -out输出到文件  hello.en 输出文件名

    使用私钥解密:

    openssl rsautl -decrypt -in hello.en -inkey rsa_private_key.pem -out hello.de
    

    参数: -decrypt 解密  -in 从文件输入 hello.en 上一步生成的加密文件  -inkey 输入的密钥 rsa_private_key.pem 上一步生成的私钥  -out输出到文件  hello.de 输出的文件名

    php加解密:

    $profile="taoshihan";
    echo "加密前:{$profile}
    ";
    //公钥加密
    $public_key=file_get_contents("rsa_public_key.pem");
    $pub_key = openssl_pkey_get_public($public_key); 
    openssl_public_encrypt($profile,$encrypted,$pub_key);
    $encrypted=base64_encode($encrypted);//因为加密后是乱码,所以base64一下
    echo "加密后:
    ";
    echo $encrypted."
    ";
    
    //私钥解密
    $private_key=file_get_contents("rsa_private_key.pem");
    $pi_key =  openssl_pkey_get_private($private_key); 
    openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);
    echo "解密后:
    ";
    echo $decrypted."
    ";

    firebase/php-jwt生成JWT:

    生成:
    
    $jwt=JWT::encode($token,self::$privateKey,'RS256');
    
    解密:
    
    $token=JWT::decode($jwt,self::$publickKey, ['RS256']);

    参数:$privateKey为私钥;publickKey为公钥

    来源:https://www.cnblogs.com/hnhycnlc888/archive/2018/08/28/9551778.html

    php-jwt::https://github.com/firebase/php-jwt

    关于JWT:JSON Web Token 入门教程

    https://github.com/firebase/php-jwt

  • 相关阅读:
    图片剪切
    js事件(Event)知识整理
    原生JavaScript事件详解
    underscore源码解析
    win7 vi工具
    开源java数据库库
    win7快捷键
    win7 绿色版MySQL安装与配置
    maven jetty
    javax inect
  • 原文地址:https://www.cnblogs.com/fogwang/p/13446889.html
Copyright © 2011-2022 走看看