RSA Python从导入的Java公钥加密消息

2024-05-15 22:14:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我从java导入了一个公钥到python我使用的是sockets

在java中,我使用RSA/ECB/PKCS1Padding

在python中,我使用Crypto

在变量server_public_key中,我导入了公钥

cipher中,我使用PKCS1_OAEP来加密消息

ciphertext中,我加密消息

然后我就把它变成了一个告别

然后我把它送回爪哇

但是java发送这个错误Exception in thread "main" javax.crypto.BadPaddingException: Decryption error

这是我的密码

message = "SENDING TO JAVA"
s= socket.socket()
     s.connect((address,9000))
        data = s.recv(1024)
        data = data[2:]
        server_public_key = RSA.importKey(data)
        cipher = PKCS1_OAEP.new(server_public_key)
        ciphertext = cipher.encrypt(mensaje)
        b = bytearray()
        b.extend(ciphertext)
        b = bytearray()
        b.extend(ciphertext)
        s.sendall(b)      

Tags: key消息dataserversocketjavapublicrsa
1条回答
网友
1楼 · 发布于 2024-05-15 22:14:25

当我删除正在发送的密文的第二个不可理解的副本,并清理并更正python代码时,它对我是有效的。这是我使用的python代码。在

import socket
import struct

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

#
# the following is an alternative recvall function that can be used
# if your platform does not provide the MSG_WAITALL socket flag.
# 
def recvall2(s, size):
    received_chunks = []
    buf_size = 4096
    remaining = size
    while remaining > 0:
        received = s.recv(min(remaining, buf_size))
        if not received:
            raise Exception('unexcepted EOF')
        received_chunks.append(received)
        remaining -= len(received)
    return b''.join(received_chunks)

def recvall(s, size):
    return s.recv(size, socket.MSG_WAITALL)

def oaep_example():
    message = b"SENDING TO JAVA"
    s = socket.socket()
    s.connect(('127.0.0.1', 9000))
    pubkey_size = struct.unpack(">H", recvall(s, 2))[0]
    pubkey_der = recvall(s, pubkey_size)
    server_public_key = RSA.importKey(pubkey_der)
    cipher = PKCS1_OAEP.new(server_public_key)
    cipher_text = cipher.encrypt(message)
    s.sendall(cipher_text)
    s.close()

if __name__ == '__main__':
    oaep_example()

演示这一点的小Java服务器是 在

^{pr2}$

注意:^{}来自googleGuava库。在

相关问题 更多 >