我正在使用 Python Pycrypto 模块生成 RSA 密钥对:
#!/home/user/Desktop/generate_keys.py
from Crypto.PublicKey import RSA
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024,random_generator)
public_key = key.publickey().exportKey() #export public key
private_key = key.exportKey() #export private key
print(public_key)
print(private_key)
我需要做的是在Python中运行脚本并将两个密钥传递给PHP,将其存储在数据库中。我试图通过在shell中执行python脚本然后在PHP中获取输出来传递变量。
<?php
$command = escapeshellcmd('python3 generate_keys.py');
$public_key = shell_exec($command);
echo $public_key;
?>
这里的问题是我不明白如何将变量从Python传递给PHP,我所做的只是将一个python脚本的输出带入PHP。
如果我尝试在两个单独的Python脚本中执行此操作:
公钥:
from Crypto.PublicKey import RSA
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024,random_generator)
print(key.publickey().exportKey())
私钥:
from Crypto.PublicKey import RSA
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024,random_generator)
print(key.exportKey())
每次运行random_generator
时,我都会得到一个不同的密钥对。
如何将Python ('public_key' & 'private_key')
的变量传递给PHP变量?
我已经检查了一些关于将变量从python传递到php的答案,反之亦然,但我不明白。 如果php,python和shell之间的通信可以优化,请通知我。 谢谢!
答案 0 :(得分:1)
你几乎就在那里;)你总是可以将2个键组合成一个字符串,中间有一个分隔符。
#!/home/user/Desktop/generate_keys.py
from Crypto.PublicKey import RSA
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024,random_generator)
public_key = key.publickey().exportKey() #export public key
private_key = key.exportKey() #export private key
data = public_key + "||" + private_key
print(data)
因此,当您在php中收到数据时,您可以使用explode(delimiter, string)
。
<?php
$command = escapeshellcmd('python3 generate_keys.py');
$keys = shell_exec($command);
$splitted_keys = explode("||", $keys);
echo $splitted_keys[0];
?>