如何用python用私钥给报文rsa加密

发布于 2022-01-01 13:04:27 字数 1012 浏览 448 评论 4

最近要跟某支付接口对接,在服务端这边,要求对数据进行签名,而他们提供的demo是java的

PrivateKey pKey = (PrivateKey)store.getKey(alias, pwd.toCharArray());
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, pKey);

其中- - pkey 他们是用私钥的 ,一般来说不是用公钥加密私钥解密吗.而且,签名是签名,加密是加密吧- - 怎么他们说要我去签名,但他们实际却是用私钥去加密来充当签名 -- 

现在我这边是用python,但是模拟他们的操作后发现加密后结果并不一样,感觉有点乱了

python:

         with open(UNIONPAY_PRIVATE_KEY_FILE) as key_file:
            key2 = rsa.PrivateKey.load_pkcs1(key_file.read())

        msg8 = msg.encode('utf-8')
        msg_dis = md5(msg8).digest()
        print rsa.encrypt(msg_dis,key2)
        print b64encode(rsa.encrypt(msg_dis,key2))

第一次提问,不太懂, 目前在md5后跟他们提供的demo的结果还是一致的.

但是我用 rsa module的encrypt去加密,结果却不同,

求解答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

情栀口红 2022-01-06 21:27:38

加密是对等的,方法也是对等的。跟你用什么语言没有关系。

1、对方只会用你的公钥(或他的公钥)加密,所谓公钥就是你要公布给别人用的。他不会有你的私钥,因为这个私钥只有你有

2、签名算法实际上是加了一些东西的。

以下是我以前写的项目里面用来签名支付(阿里)的(我就没有时间验证了,我只把这块代码贴出来,希望能用):

def build_rsasign(content):
    private = os.path.join(cfile.KEY_PATH, 'private')
    key = RSA.importKey(open(private).read())  
    signer = PKCS1_v1_5.new(key) 
    d = SHA.new()
    d.update(content)
    sign = signer.sign(d)
    signature = base64.b64encode(sign)

    return signature
    

def check_rsasign(content, sign, stype=0):
    
    p = 'public'
    if stype == 1:
        p = 'public_fuwu'
    
#    content = content.encode(charset)
    sign = base64.b64decode(sign)
    public = os.path.join(cfile.KEY_PATH, p)
    key_file = open(public, 'r').read()
    pub_key = RSA.importKey(key_file)
    verifier = PKCS1_v1_5.new(pub_key)
    d = SHA.new()
    d.update(content)
    return verifier.verify(d, sign) 

 

葬花如无物 2022-01-06 00:52:06

那为何java加密 跟我用python加密结果会不一样,那个跟java的"RSA/ECB/PKCS1Padding" 有关吗?好像python没这东西

彼岸花ソ最美的依靠 2022-01-01 14:15:30

rsa的两个密钥地位实际上是对等的,用一个加密用另一个就能解密

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文