3
私はPythonと機能的に同等の署名を実装しようとしており、暗号化ライブラリはPHPのopenssl_pkey_get_private
とopenssl_sign
にSHA1ハッシュを使用して実装しています。私はPHPがPKCS1v15パディングを使用していることを読んだので、これも私が使用しようとしているものです。私のコードは次のとおりオペレータisinstance
はpadding.PKCS1v15
インスタンス代わりの種類(クラス)自体する必要があることを示しているPython暗号化:PKCS1v15パディングを使用してRSA秘密鍵で署名できません
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-ef3db8a6f4a8> in <module>()
3 message,
4 padding.PKCS1v15,
----> 5 hashes.SHA1()
6)
/home/vagrant/virtualenvs/test/lib/python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py in sign(self, data, padding, algorithm)
613
614 def sign(self, data, padding, algorithm):
--> 615 signer = self.signer(padding, algorithm)
616 signer.update(data)
617 signature = signer.finalize()
/home/vagrant/virtualenvs/test/lib/python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py in signer(self, padding, algorithm)
550
551 def signer(self, padding, algorithm):
--> 552 return _RSASignatureContext(self._backend, self, padding, algorithm)
553
554 def decrypt(self, ciphertext, padding):
/home/vagrant/virtualenvs/test/lib/python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py in __init__(self, backend, private_key, padding, algorithm)
170
171 if not isinstance(padding, AsymmetricPadding):
--> 172 raise TypeError("Expected provider of AsymmetricPadding.")
173
174 self._pkey_size = self._backend._lib.EVP_PKEY_size(
TypeError: Expected provider of AsymmetricPadding.
どの暗号化ライブラリのバージョンを使用していますか? –
バージョン1.4と1.5で試しました。 – Marii
PSS埋め込みで試しましたか?また、脆弱性のために新しいアプリケーションにPKCS1v15パディングを使用することは推奨されません。 https://cryptography.io/en/latest/hazmat/primitives/asymmetric/rsa/#cryptography.hazmat.primitives.asymmetric.padding.PKCS1v15 –