Python 3.7 은 hashlib 와 Crypto 를 기반 으로 서명 검사 기능(인 스 턴 스 코드)을 실현 합 니 다.

환경:
Python3.7
라 이브 러 리 의존:

import datetime
import random
import requests
import hashlib
import json
import base64
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from Crypto.Cipher import AES
추가 서명:

def sign(signflag,keypath,baseRequest):
 #http  body
  print(baseRequest)
  #    
  if not signflag: return baseRequest
  else:
   #          
    businessdata = json.dumps(baseRequest["data"])
    #    (.key  ,   openssl java.keytools  )
    with open(keypath,'r') as rsaKeyFile:
      rsaKey = rsaKeyFile.read().replace("
",'') print(rsaKey) rsaKeyBytes = base64.b64decode(rsaKey) print(rsaKeyBytes) #SHA256 ,RSA priKey = RSA.importKey(rsaKeyBytes) signer = PKCS1_v1_5.new(priKey) hash_obj = SHA256.new(business_data.encode('utf-8')) signature = base64.b64encode(signer.sign(hash_obj)) print(signature) # baseRequest['sign'] = signature.decode() print(baseRequest) return baseRequest
검사 서명:

def validata(signflag,cerpath,res):
  if not signflag: return res
  else:
   #        
    data = res['data']
    sign = res['sign']
    #  cer    pem  ,  openssl  
    #openssl x509 -inform der -pubkey -noout -in xxxxx.cer>xxxxx.pem
    cert = open(cerpath).read().replace("-----BEGIN PUBLIC KEY-----
","").replace("-----END PUBLIC KEY-----
","").replace("
","") print(cert) # pubBytes = base64.b64decode(cert) pubKey = RSA.importKey(pubBytes) signer = SHA256.new(json.dumps(data).encode("utf-8")) verifier = PKCS1_v1_5.new(pubKey) return verifier.verify(signer,base64.b64decode(sign))
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Python 3.7 은 hashlib 와 Crypto 를 바탕 으로 서명 검사 기능 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기