一个简单的api来执行基本的基于rsa的操作。
simple-rsa的Python项目详细描述
简单rsa
A straightforward API to perform basic RSA-based operations.
基本原理
任何加密库都会公开所有的可能性,而且应该公开。但有时您只需要一个简单的sign
和validate
api。这就是密码模块周围的包装器模块。没有更多,没有更少。
开始
该模块基本上公开了以下功能:
generate_key_pair()
返回私钥和公钥的元组encode(key)
返回编码密钥decode(pem)
返回键sign(payload, key)
返回签名validate(payload, signature, key)
返回true或异常
$ python Python 2.7.15 (default, Dec 272018, 11:55:59)[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)] on darwin Type "help", "copyright", "credits" or "license"for more information. >>> import simple_rsa as rsa >>> private, public= rsa.generate_key_pair() >>> rsa.encode(public)'-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5C15SFjpTCrdqB+0zFyu\nC9KJkNT1byzQPyATtLze/PNWjfqYL0RjvL4cmvmBWLeTQvnDx9SQfnQT02+4Q8Ov\nOaRTPqghEJctAh7KHwZfQzH29miC1WxXtGFcMFoAj17WPyMaOO3EcHqb4ttnAAPD\nt6B415HtGZo4oH6xY7QMj4eRceTv4++zACNHvqArO3bFFiNTBC8vCOpIg3xsYV4w\n7lQZs2lwGlzXPFJUeZglvsWTPJ54E1KabtkC/wSRFZBYtml8ZvzFfNDTOhcDyBR9\nVTV4K7iIGXG0A9C7mmj3hgALS3qSP5EK6fi51ufg98WokCLFcTSD/EphUlixazPo\nOQIDAQAB\n-----END PUBLIC KEY-----\n' >>> payload= b"something important" >>> signature= rsa.sign(payload, private) >>> assert rsa.validate(payload, signature, public) >>> another_payload= b"something else" >>> another_signature= rsa.sign(another_payload, private) >>> assert rsa.validate(payload, another_signature, public) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "simple_rsa/__init__.py", line 74, in validate hashes.SHA256() File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/rsa.py", line 477, in verify self._backend, padding, algorithm, self, signature, data File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/rsa.py", line 272, in _rsa_sig_verify raise InvalidSignature cryptography.exceptions.InvalidSignature