如何将rsa从python转换为php?

问题描述 投票:-2回答:1

我正在尝试加密要通过API发送给身份验证的密码。我的情况非常类似于another encrypt example

Python部分的格式为see the get_pwd_rsa function

Python部分:

import rsa

key = rsa.PublicKey(n, e)

encropy_pwd = rsa.encrypt(message, key)

binascii.b2a_hex(encropy_pwd)

而且我尝试使用phpseclib解决我的问题,但是加密结果不正确:

use phpseclib\Crypt\RSA;

$rsa = new RSA();

$rsa->loadKey([
    'n' => new \phpseclib\Math\BigInteger($n, 16),
    'e' => new \phpseclib\Math\BigInteger($e, 16),
]);

$ciphertext = $rsa->encrypt($message);

return bin2hex($ciphertext);

加密结果不正确,我不确定我缺少哪一部分。

php python rsa phpseclib
1个回答
0
投票

[补充James所说的话,我怀疑您正在使用的任何Python库都在进行PKCS1填充,如果它完全在进行任何填充。

与phpseclib进行对比,后者默认使用OAEP填充。可以启用PKCS1填充,但是它对更安全的OAEP填充默认值

此外,PKCS1和OAEP加密都是随机的。我之所以这样说,是因为我有点想知道您是否在说PHP代码错误,因为它给出的结果与python代码不同。不应该这样如果您使用phpseclib两次运行一轮RSA加密,并且每次都使用相同的明文和密钥,则每次将获得不同的密文。 PKCS1和OAEP的设计目的是为了防御已知的明文攻击。

© www.soinside.com 2019 - 2024. All rights reserved.