国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python加密與解密,加簽與驗簽

daydream / 2379人閱讀

摘要:在與第三方服務對接時,加密與解密,加簽與驗簽是這個過程中的關鍵一步一般情況下,對接服務中會有兩對公私鑰。傳回來的數據,使用自己的私鑰解密,使用對方的公鑰驗簽。加密加密超長字節個字節一加密解密解密超長字符一解密加簽驗簽簽名待驗證簽名

在與第三方服務對接時,加密與解密,加簽與驗簽是這個過程中的關鍵一步

一般情況下,對接服務中會有兩對公私鑰。使用對方公鑰進行加密,使用自己私鑰進行加簽。傳回來的數據,使用自己的私鑰解密,使用對方的公鑰驗簽。

import base64
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA
from Crypto.Cipher import PKCS1_v1_5
from Crypto.Signature import PKCS1_v1_5 as SIGN_PKCS

PUB_KEY = RSA.importKey(open("rsa_public_key.pem","r").read())
PRI_KEY = RSA.importKey(open("rsa_private_key.pem","r").read())

加密

def split_data(l, n):
    for i in range(0, len(l), n):
        yield l[i: i+n]
        
def encrypt(params):
    raw = params.encode("utf-8")
    cipher = PKCS1_v1_5.new(PUB_KEY)
    # 加密超長字節117個字節一加密
    content = b"".join([cipher.encrypt(x) for x in chunks(raw, 117)])
    return base64.b64encode(content)
    

解密

def decrypt(data):
    raw = data.encode("utf-8")
    decrypt = PKCS1_v1_5.new(PRI_KEY).decrypt
    # 解密超長字符128一解密
    content = b"".join(decrypt(x, object()) for x in chunks(raw, 128))
    return content.decode()

加簽

def signer(data):
    signstr = data.encode("utf-8")
    sign = SIGN_PKCS.new(PRI_KEY).sign(SHA.new(signstr))
    return base64.b64encode(sign)

驗簽

def verify_sign(unsign, raw_sign):
    """
     unsign: 簽名
     raw_sign: 待驗證簽名
    """
    assert SIGN_PKCS.new(PUB_KEY).verify(SHA.new(unsign.encode("utf-8")), raw_sign)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45551.html

相關文章

  • 支付簽名原串的那些事,但選擇排序生成簽名原串

    摘要:工商銀行中國工商銀行提現支付域名項目名接口我們第一次使用支付請求對象,是為了將其生成簽名原串。第一次加密是將不包含屬性值的支付請求對象封裝的簽名原串和我們生成的私鑰共同加密成簽名字符串,放進支付請求對象中的屬性中。 引題 【備注】簽名原串的源碼放在git上了,請大家參看:項目源碼 筆者最近在做支付、調用天貓優惠券、綁定銀行卡相關的業務,在這些業務中,我們都需要將數據加密。然而,數據的加...

    DC_er 評論0 收藏0
  • 基于注解的 java 加簽驗簽框架 checksum

    摘要:基于注解生成加簽驗簽。后來發現如下的問題有些字段太大,不想參與驗簽,但是無法方便的調整。感覺這樣有很大的弊端,完全失去了靈活性。 checksum 基于 java 注解生成加簽驗簽 checksum。 開源地址:github checksum 創作緣由 原來的代碼中,checksum 的生成是用的工具類方法。 后來發現如下的問題: 有些字段太大,不想參與驗簽,但是無法方便的調整。 ...

    jindong 評論0 收藏0
  • 回眸曾經的項目,第三方支付相關,所帶來的溝通問題

    摘要:錢可以存儲在自己的余額中,這就相當于微信錢包,余額可以提現到銀行卡的中。我們的第三方支付平臺是連連支付,杭州的一家公司。私鑰怎么加簽每個公司的加簽方式是不一樣的,支付寶有支付寶的加簽方式,微信有微信的加簽方式。 導讀 筆者在校期間,通過自學java。學校里也開過這門課,但是,講的都是一些基礎,比如java的表達式、基本類型、自定義類型等等。也都是很基礎的東西,就連lambda表達式都沒...

    kaka 評論0 收藏0
  • python (3.x) 實現RSA 加簽 驗簽 以及key的序列化

    摘要:首先安裝確認安裝的是版本版本的是不一樣的生成公私鑰對生成私鑰同時包含公鑰此處為序列化公鑰私鑰并寫入文件存儲序列化私鑰無密碼也可以加入密碼保護私鑰將私鑰寫入文件將公鑰寫入文件也可以采用其他序列化方法比如對公鑰生成格式的序列化字符串輸出類似于 首先 安裝cryptography sudo pip3 install cryptography 確認安裝的是2.1.x版本 (1.x版本的api是...

    kuangcaibao 評論0 收藏0
  • RSA加密解密(無數據大小限制,php、go、java互通實現)

    摘要:加解密中必須考慮到的密鑰長度明文長度和密文長度問題。而只要用到,那么就要占用實際的明文長度,于是實際明文長度需要減去字節長度。所以如果要對任意長度的數據進行加密,就需要將數據分段后進行逐一加密,并將結果進行拼接。 RSA加解密中必須考慮到的密鑰長度、明文長度和密文長度問題。明文長度需要小于密鑰長度,而密文長度則等于密鑰長度。因此當加密內容長度大于密鑰長度時,有效的RSA加解密就需要對內...

    whjin 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<