9
A
回答
1
HTTPS通常在Web服務器上實現,而不是在腳本語言中實現。例如,如果您要將此項目部署到Apache服務器,則可以檢出the Apache documents relating to SSL。
2
如果您只是想通過HTTPS發佈表單數據,Apache應該能夠爲您處理。但是,如果你想使用OpenSSL和PHP生成密鑰對數據進行加密,我寫這兩篇文章可能會使用你:
http://3stepsbeyond.co.uk/company-blog/coding/openssl-and-php-part-one
http://3stepsbeyond.co.uk/company-blog/coding/openssl-and-php-part-two
+0
不幸的是,現在鏈接已經死亡。 – Code4R7 2018-01-29 18:05:12
6
這裏有
function encryptData($source, $privateKey)
{
$maxLength = 117;
$output = "";
while ($source)
{
$slice = substr($source, 0, $maxLength);
$source = substr($source, $maxLength);
openssl_private_encrypt($slice, $encrypted, $privateKey);
$output .= $encrypted;
}
return $output;
}
function decryptData($source, $publicKey)
{
$maxLength = 128;
$output = "";
while ($source)
{
$slice = substr($source, 0, $maxLength);
$source = substr($source, $maxLength);
openssl_public_decrypt($slice, $decrypted, $publicKey);
$output .= $decrypted;
}
return $output;
}
// usage
$myPrivateKey = ""; // your generated private key
$myPublicKey = ""; // your generated public key
$rawText = "lorem ipsum";
$crypted = encryptData($rawText, $myPrivateKey);
$decrypted = decryptData($crypted, $myPublicKey);
生成您的公/私鑰對,只是執行以下命令:
關於如何使用OpenSSL和PHP的一些例子openssl genrsa -out private_key.pem 1024
openssl rsa -pubout -in private_key.pem -out public_key.pem
您將在當前目錄中找到兩個鍵。如果您需要將它們添加到變量中,請注意空格。
9
你想用php生成一對密鑰嗎?
$NEW_KEY = openssl_pkey_new(array(
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export_to_file($NEW_KEY, 'private.key');
$NEW_KEY_DETAILS = openssl_pkey_get_details($NEW_KEY);
file_put_contents('public.key', $NEW_KEY_DETAILS['key']);
openssl_free_key($NEW_KEY);
你已經有鑰匙了嗎?
$public = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfmlc2EgrdhvakQApmLCDOgP0n
NERInBheMh7J/r5aU8PUAIpGXET/8+kOGI1dSYjoux80AuHvkWp1EeHfMwC/SZ9t
6rF4sYqV5Lj9t32ELbh2VNbE/7QEVZnXRi5GdhozBZtS1gJHM2/Q+iToyh5dfTaA
U8bTnLEPMNC1h3qcUQIDAQAB
-----END PUBLIC KEY-----";
$private = "-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDfmlc2EgrdhvakQApmLCDOgP0nNERInBheMh7J/r5aU8PUAIpG
XET/8+kOGI1dSYjoux80AuHvkWp1EeHfMwC/SZ9t6rF4sYqV5Lj9t32ELbh2VNbE
/7QEVZnXRi5GdhozBZtS1gJHM2/Q+iToyh5dfTaAU8bTnLEPMNC1h3qcUQIDAQAB
AoGAcbh6UFqewgnpGKIlZ89bpAsANVckv1T8I7QT6qGvyBrABut7Z8t3oEE5r1yX
UPGcOtkoRniM1h276ex9VtoGr09sUn7duoLiEsp8aip7p7SB3X6XXWJ9K733co6C
dpXotfO0zMnv8l3O9h4pHrrBkmWDBEKbUeuE9Zz7uy6mFAECQQDygylLjzX+2rvm
FYd5ejSaLEeK17AiuT29LNPRHWLu6a0zl923299FCyHLasFgbeuLRCW0LMCs2SKE
Y+cIWMSRAkEA7AnzWjby8j8efjvUwIWh/L5YJyWlSgYKlR0zdgKxxUy9+i1MGRkn
m81NLYza4JLvb8/qjUtvw92Zcppxb7E7wQJAIuQWC+X12c30nLzaOfMIIGpgfKxd
jhFivZX2f66frkn2fmbKIorCy7c3TIH2gn4uFmJenlaV/ghbe/q3oa7L0QJAFP19
ipRAXpKGX6tqbAR2N0emBzUt0btfzYrfPKtYq7b7XfgRQFogT5aeOmLARCBM8qCG
tzHyKnTWZH6ff9M/AQJBAIToUPachXPhDyOpDBcBliRNsowZcw4Yln8CnLqgS9H5
Ya8iBJilFm2UlcXfpUOk9bhBTbgFp+Bv6BZ2Alag7pY=
-----END RSA PRIVATE KEY-----";
if (!$privateKey = openssl_pkey_get_private($private)) die('Loading Private Key failed');
if (!$publicKey = openssl_pkey_get_public($public)) die('Loading Public Key failed');
$encrypted = '';
$decrypted = '';
$plaintext = 'This is just some text to encrypt';
echo '<p>$plaintext = ' . $plaintext . '<p>';
if (!openssl_public_encrypt($plaintext, $encrypted, $publicKey)) die('Failed to encrypt data');
echo '<p>$encrypted = ' . $encrypted . '<p>';
if (!openssl_private_decrypt($encrypted, $decrypted, $privateKey)) die('Failed to decrypt data');
echo '<p>$decrypted = ' . $decrypted . '<p>';
你走吧,盡情享受吧!
相關問題
- 1. 如何在Qt中實現OpenSSL?
- 2. 在OpenSSL中實現PBKDF2
- 3. Linq如何實現它?
- 4. RTMPS,如何實現它
- 5. 如何實現php包
- 6. 如何在PHP中實現
- 7. 如何實現由PHP
- 8. 如何實現在PHP
- 9. 如何實現MVC在PHP
- 10. 如何實現與PHP
- 11. 嘗試運行openssl s_server實用程序時出現OpenSSL錯誤
- 12. RFC 3447(pkcs#1 v2.1):它在Openssl中實現嗎?如果是,從哪個版本?
- 13. 如何實現OpenSSL的引擎,USB令牌
- 14. 如何在Bouncy Castle中實現OpenSSL的EC_POINT_set_compressed_coordinates_GFp?
- 15. 如何在Openssl中實現客戶端的相互認證?
- 16. 如何實現現場演示 - php?
- 17. OpenSSL:它的EC_POINT
- 18. 什麼是Front Controller,它是如何在PHP中實現的?
- 19. 什麼是SSO和如何在PHP中實現它?
- 20. OpenSSL EVP AES/DES加密實現
- 21. 使用OpenSSL API實現Windows CryptoAPI CryptDeriveKey
- 22. 其中是openssl中的SHA1_Init實現
- 23. 在Python中實現OpenSSL AES加密
- 24. Shamir祕密共享的OpenSSL實現
- 25. 在openssl中實現`aes.h`函數
- 26. Openssl的rsault驗證Java實現
- 27. Openssl實現改進的sha1哈希
- 28. 如何實現與PHP PHP擴展7
- 29. 模擬主機無法訪問 - 如何實現/實現它
- 30. Simplemodal - 如何實現它?這裏
爲什麼有票要重新打開呢?有沒有關於制定規範的元討論? – 2017-02-14 05:52:58