第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP:從單行私鑰獲取私鑰

PHP:從單行私鑰獲取私鑰

PHP
嗶嗶one 2022-06-11 10:16:04
我正在嘗試創(chuàng)建一個JWT令牌。另一臺服務器將公鑰存儲在一行中并使用它進行驗證。此外,用于驗證的公鑰是單行的。因此,要生成正確的 JWT 令牌,我認為我還應該在一行中使用私鑰(可能有\(zhòng)n也可能沒有)。我正在使用openssl_sign生成openssl_reource用作密鑰的令牌。我從openssl_pkey_get_private得到那個參數(shù)。但是在這種情況下發(fā)生的問題是,它要么接受pem文件路徑,要么接受PEM字符串格式的密鑰。所以,如果我將它private_key作為單行傳遞,它不會給我所需的輸出。那么,我該如何解決這個問題。正如我看到的其他語言庫能夠通過在一行中傳遞私鑰來生成簽名。
查看完整描述

1 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

在 PHP 中,鍵可以用換行符或單行(帶\n)來格式化。兩者都有效。在以下示例中,為簡單起見,我使用了 512 位加密的 RSA 密鑰(盡管出于安全原因,實際上必須使用更大的密鑰(>= 2048 位)):


<?php


// Private key: 512 bit for simplicity

// Passphrase: MyPassphrase

// openssl genrsa -aes256 -out private.pem 512

$privKeyEnc = "-----BEGIN RSA PRIVATE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: AES-256-CBC,8F2D6F9594B3D379BF9D9748BD174458


RP2fyz1VNBKHiCadC5B9fjxV7z7AMAqbsN2vykFfPhdUFsxlJaecEeTMT7s6IbZN

Pr80+ljLjJ0SxJiK+j8DAc/Wrf+qyYUFcWbsvOhUIPyB5ww9+mEeIERJCigsyZJ7

k/Apau/BypdC9vCXKB3wM9FcmvP1g/ZwVoXfN3TIPEfWTktvuf74yFNoIaVbZAK/

+tzAGduu9wLkr6WTq4Isqy/IPjVCp9VwH1wNnz+hjkO7oELcCpFieIvAidUMKBR9

EdexLQCimbOl2wlfRNLincK8+FDOVWx6ElFFQlhzyWQCt8ed1fdiAggKxOco4Ww2

tFjIzaO4KXlbc9JFGd9PzigpftN/aHbk3c+x0E+3q5u8eySai4vgk38s1KaE7rn/

rarCgtGxOlbbTkI3opkjIrGlrsEyexKtS23mI/Dgcco=

-----END RSA PRIVATE KEY-----";


// One-liner using \n

$privKeyEnc_1Line = "-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-256-CBC,8F2D6F9594B3D379BF9D9748BD174458\n\nRP2fyz1VNBKHiCadC5B9fjxV7z7AMAqbsN2vykFfPhdUFsxlJaecEeTMT7s6IbZN\nPr80+ljLjJ0SxJiK+j8DAc/Wrf+qyYUFcWbsvOhUIPyB5ww9+mEeIERJCigsyZJ7\nk/Apau/BypdC9vCXKB3wM9FcmvP1g/ZwVoXfN3TIPEfWTktvuf74yFNoIaVbZAK/\n+tzAGduu9wLkr6WTq4Isqy/IPjVCp9VwH1wNnz+hjkO7oELcCpFieIvAidUMKBR9\nEdexLQCimbOl2wlfRNLincK8+FDOVWx6ElFFQlhzyWQCt8ed1fdiAggKxOco4Ww2\ntFjIzaO4KXlbc9JFGd9PzigpftN/aHbk3c+x0E+3q5u8eySai4vgk38s1KaE7rn/\nrarCgtGxOlbbTkI3opkjIrGlrsEyexKtS23mI/Dgcco=\n-----END RSA PRIVATE KEY-----";


// Public key: 

// Passphrase: MyPassphrase

// openssl rsa -in private.pem -outform PEM -pubout -out public.pem

$pubKey = "-----BEGIN PUBLIC KEY-----

MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMjYQLbdIVgKX1mSyKijOIpmlB9YWui1

KoCniRNHUPEsxth+o9fZXZMo1gzh9ZlFs6VLiyU7kv2+5QElOnhNzwcCAwEAAQ==

-----END PUBLIC KEY-----";


// One-liner using \n

$pubKey_1Line = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMjYQLbdIVgKX1mSyKijOIpmlB9YWui1\nKoCniRNHUPEsxth+o9fZXZMo1gzh9ZlFs6VLiyU7kv2+5QElOnhNzwcCAwEAAQ==\n-----END PUBLIC KEY-----";


$dataToSign = 'The quick brown fox jumps over the lazy dog.';


// Signing

//$privateKey = openssl_pkey_get_private("$privKeyEnc", "MyPassphrase");     // also works

$privateKey = openssl_pkey_get_private("$privKeyEnc_1Line", "MyPassphrase"); 

openssl_sign($dataToSign, $signature, $privateKey, 'sha256'); 

$signatureBase64 = base64_encode($signature);

print("Signature (Base64): ".$signatureBase64."<br>");


// Verifying

$publicKey = openssl_pkey_get_public("$pubKey");                             

//$publicKey = openssl_pkey_get_public("$pubKey_1Line");                     // also works

$verified = openssl_verify($dataToSign, $signature, $publicKey,'sha256');

print("Verification: ".$verified."<br>");


/*

Output:

Signature (Base64): KVuUd+xy6at0emmhF20rbiD9lWzIN9euwKbeEm7aMvxqEkJ68HrjAoDJ37R3QGPI24woXY3TON9pahAhx+YNhQ==

Verification: 1

*/


?>


查看完整回答
反對 回復 2022-06-11
  • 1 回答
  • 0 關注
  • 179 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號