私は現在、Pythonサーバーを既存のApache/phpサーバーと並べて実行しようとしています。私がたどり着いたカスタム ソリューションは、$_SESSION を暗号化された Cookie として保存し、php 認証を以前と同じように動作させ、2 つのサーバー間で秘密鍵を共有することでした。
2 つの問題:
とにかく、私のphp暗号化されたCookie関数:
session_start();
$encryptToCookie = function($varToEncode,$cookieName,$privateKey){
$iv = $privateKey;
$pass = $privateKey;
$method = 'aes-128-cbc';
$encryptedString = openssl_encrypt(json_encode($varToEncode), $method, $pass, true, $iv);
setcookie($cookieName,bin2hex($encryptedString));
};
$encryptToCookie($_SESSION,"sessionEncrypted","yohoyohoyohoyoho"); // private key must be 16bit
そして私のpython側の復号化:
from subprocess import Popen, PIPE
import binascii
def decrypt(encryptedString,privateKey):
encryptedString = binascii.unhexlify(encryptedString)
pathToOpenSSL = 'C:\pysrc\openssl\openssl.exe' # MODIFY THIS!!
openssl = Popen([pathToOpenSSL,
'enc','-aes-128-cbc','-d',
'-nosalt','-nopad','-K',
privateKey.encode('hex'),
'-iv',
privateKey.encode('hex')],
stdin=PIPE,stdout=PIPE)
decryptedString = openssl.communicate(encryptedString)[0].replace('\x04','')
return decryptedString
decrypt(encryptedString,'yohoyohoyohoyoho')
これが誰かの役に立てば幸いです。秘密鍵の生成とその取り扱いについての通常のことをすべて覚えておいてください!