簡體   English   中英

無法驗證服務器端使用客戶端Javascript創建的RSA簽名

[英]Fail to verify RSA signature on server side that was created using Javascript on client side

我在如下創建簽名的客戶端上使用偽造

//Client Side
var md = forge.md.sha256.create();
            md.update(encryptedVote, 'utf8');
            var pss = forge.pss.create({
            md: forge.md.sha256.create(),
            mgf: forge.mgf.mgf1.create(forge.md.sha256.create()),
            saltLength: 20
            });
            var signature = privateKey.sign(md, pss);

然后,稍后在服務器上,我嘗試使用加密庫如下驗證簽名。

#server side
user_public_key_loaded.verify(
            signature,
            enc_encrypted_vote,
            padding.PSS(
                mgf=padding.MGF1(hashes.SHA256()),
                salt_length=20
            ),
            hashes.SHA256()
        )

我始終收到無效的簽名錯誤。 我嘗試將客戶端上的編碼更改為md.update(encryptedVote, 'latin1'); 現在有時可以工作,而有些則不行。

知道我在做什么錯嗎?

我發現有時它會奏效,有時卻沒奏效。 在驗證我通過執行my_list = list(my_dict.values())將JSON數據放入列表之前。 然后通過執行my_list[0]my_list[1]訪問簽名和投票。 顯然,列表中數據的順序是隨機的,並且會不時變化。 因此,簽名和投票在我的職能中轉移了位置,有時它在其他方面沒有起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM