ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python利用pycrypto进行加密解密操作

2019-09-23 21:40:26  阅读:325  来源: 互联网

标签:pycrypto python 解密 private key signature encode message public


# -*- coding: utf-8 -*-


from Crypto import Random

from Crypto.PublicKey import RSA

from Crypto.Hash import SHA

from Crypto.Cipher import PKCS1_v1_5 as cipher_PKCS1_v1_5

from Crypto.Signature import PKCS1_v1_5 as signature_PKCS1_v1_5

import base64




def get_key():

    rsa = RSA.generate(1024, Random.new().read)

    private_pem = rsa.exportKey()

    public_pem = rsa.publickey().exportKey()



    return {

        "public_key": public_pem.decode(),

        "private_key": private_pem.decode()

    }




# 公钥加密

def rsa_encode(message, public_key):

    rsakey = RSA.importKey(public_key)  

    cipher = cipher_PKCS1_v1_5.new(rsakey)

    cipher_text = base64.b64encode(

     cipher.encrypt(message.encode(encoding="utf-8")))


    return cipher_text.decode()




# 私钥解密

def rsa_decode(cipher_text, private_key):

    rsakey = RSA.importKey(private_key) 

    cipher = cipher_PKCS1_v1_5.new(rsakey)


    text = cipher.decrypt(base64.b64decode(cipher_text), "ERROR")

    if text == "ERROR":

        return text

    return text.decode()



def rsa_sinature_encode(message, private_key):

    rsakey = RSA.importKey(private_key)

    signer = signature_PKCS1_v1_5.new(rsakey)

    digest = SHA.new()

    digest.update(message.encode("utf8"))

    sign = signer.sign(digest)

    signature = base64.b64encode(sign)

    return signature

    pass



def rsa_signature_decode(message, public_key, signature):

    rsakey = RSA.importKey(public_key)

    signer = signature_PKCS1_v1_5.new(rsakey)

    digest = SHA.new()

    digest.update(message.encode("utf8"))

    is_verify = signer.verify(digest, base64.b64decode(signature))

    return is_verify

    pass




private_key = """-----BEGIN RSA PRIVATE KEY-----

MIICXgIBAAKBgQDBZqKgS7Zl1qBA8vRGwZWiExJdPgHVR+RYowmlM8sylY2aZtNc

mfEqFtvOtzFTHMICSYm4dOiIm0CWPejWQJ+slMiICaR7jRQtxXvOu8UKV+hvIlX6

ckVHD7bJSZHlzmK/oEbE+D2g8rDY2V4i4obysQ0CA0auD5vP7lX1I0hBQQIDAQAB

AoGAPiU/zqhllPXRiu1G51GfRnRAa2vYZPN0AbNqDwbEnZ2G4f12n4PsBa1Qtm0R

UXalNNzyfy455mOU7nI4VlhvthImRr3js4DS0+Jh8fygzv9DfLDqR4rzjVqqa4Ux

pE/6SFDQ8DTmzJuWu9Zoij7k+ykC70DszMbxlrHLjPBpL30CQQDGIcUVwv0E6/+G

aXzRYs80biB7DQwyQfRx2nbC2FI23IBsErjh6maU25/jEZ9wZIDcFCrfySSDbelO

3JbBR3oDAkEA+eMhk1FaGuqNOJ5eVRUOGTleZBjlPUnvYcZRMZq3toQLBAAaXFVT

KSSryfwH2OOh3JSrR8OiX7gcSdeMBKQWawJBAIrHwrXQg8v7xlsO7pf3vy15ahTm

+cEGQ8OwA3nNbiDxaJ7KqmfL+RiRkbfKc0SVkVEWa0WfLY1F4qMTjiFKAKMCQQCt

Ry/wHNhzk7Prz/2v2BLXsO1gUdccodlKHqAM2rGL8ZJF6uBcqJorDI/HV2oFnwuN

jtYaxHEjGOMc3Uftq+8TAkEAnUottGXSa33csSNQJ1pIb561KdWSNaVgC/wtARPC

nxuGPIBmRqgQmiRZ+08AnicudzBF8Os7C42Y4OkeMbEP0A==

-----END RSA PRIVATE KEY-----

"""



public_key = """-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBZqKgS7Zl1qBA8vRGwZWiExJd

PgHVR+RYowmlM8sylY2aZtNcmfEqFtvOtzFTHMICSYm4dOiIm0CWPejWQJ+slMiI

CaR7jRQtxXvOu8UKV+hvIlX6ckVHD7bJSZHlzmK/oEbE+D2g8rDY2V4i4obysQ0C

A0auD5vP7lX1I0hBQQIDAQAB

-----END PUBLIC KEY-----

"""




if __name__ == '__main__':

    # keys = get_key()

    # print(keys["public_key"])

    # print(keys["private_key"])

    #加密解密

    message = "hello world!!!!!"

    encode_msg = rsa_encode(message, public_key)

    print("encode_msg ==== ", encode_msg)

    

    message = rsa_decode(encode_msg, private_key)

    print("message ==== ", message)

    

    #签名验证

    message = "it's me"

    signature = rsa_sinature_encode(message, private_key)

    print("signature ==== ", signature)

    

    verify = rsa_signature_decode(message, public_key, signature)

    print("verify ==== ", verify)

 

标签:pycrypto,python,解密,private,key,signature,encode,message,public
来源: https://blog.csdn.net/chinabhlt/article/details/101226866

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有