使用rsa公钥加密短信

时间:2018-10-31 08:52:31

标签: python openssl cryptography

我的客户给了我一个公共密钥,我想给他发送一条短信,该消息将用他的公共密钥加密。公钥带有.pub扩展名。

我正在尝试通过openssl命令在bash中执行此操作,并且使用pycrypto模块通过python进行运气不佳。我是新手,没有加密经验。

我该怎么办。谢谢!

public_key

1 个答案:

答案 0 :(得分:2)

假设:

  • 客户端提供的公钥位于“ key.pub”文件中
  • 在运行时从用户处输入要在名为“ msg”的变量中加密字符串或文本的信息。
  • 已使用命令“ sudo pip install Crypto.PublicKey
  • 安装了Crypto.PublicKey库。

代码:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_PKCS1_v1_5

with open("key.pub", 'r') as f1:
    pubkey = f1.read()

msg = raw_input("Enter String to be encrypted: ")
print("raw string->", msg)

keyPub = RSA.importKey(pubkey) # import the public key
cipher = Cipher_PKCS1_v1_5.new(keyPub)
cipher_text = cipher.encrypt(msg.encode()) # now we have the cipher
print("cipher text->", cipher_text)

文件中密钥的格式:

文件中密钥的格式应为

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAybVqRvfYvWbLsB98BqkD
lWd0/5y6SyhHt6/r6M0l7JXBweqMvxVt7XmI2yqPL56YxzcgQ8ycDkoqHJ+XozgP
iRnLNpYRlCzsiaOElbmQcnrI8iOb9Ahm6j0cbBB1S8VNvD+u9RQJt53zPxPj8/Dq
f1oNGFXOM8udNYWZaRCukLs/TumsAn0a+BF4639WtFiUvTWdVhlyvCQTs49ytRkH
rXH30RkB528RIvTGeW8xBTV4NaiTIzAEKCVSPagLr4Hzbb9b5+bODic/zkLGQazy
/NKOFgiB7kD2+WEMcuhTr5noeXau0PDAhgmrBhzzWOjUwwaO+ACvJLkPXZfjhy7P
+wIDAQAB
-----END PUBLIC KEY-----