电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python RSA加密的示例

瀏覽:5日期:2022-07-02 16:18:26

RSA加密是一種非對稱加密,通常使用公鑰加密,私鑰解密,私鑰簽名,公鑰驗簽。

在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的.RSA算法通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網絡服務器中注冊。

RSA是一種公鑰密碼算法,加密算法是將明文m(m<n是一個整數)加密成密文c,即明文數字m的 E 次方求mod N,也就是將明文與自己相乘E次,然后結果除以N求余數,余數就是密文c,E和N組合就是公鑰;解密算法為將密文c解密為明文m,即密文數字c的D次方求mod N,也就是將密文與自己相乘D次,然后結果除以N求余數,余數就是明文m,D和N組合就是私鑰。

以下是關于RSA生成公鑰私鑰、加密、解密、加簽、驗簽的示例。

1、生成公鑰私鑰:

from Crypto import Randomfrom Crypto.PublicKey import RSA # 偽隨機數生成器random_generator = Random.new().read# rsa算法生成實例rsa = RSA.generate(1024, random_generator)# 私鑰的生成private_pem = rsa.exportKey()with open('private.pem', 'wb') as f: f.write(private_pem)# 公鑰的生成public_pem = rsa.publickey().exportKey()with open('public.pem', 'wb') as f: f.write(public_pem)

生成的公鑰私鑰文件在項目路徑下,也可以直接指定生成文件路徑。

文件樣例

python RSA加密的示例

生成的公鑰私鑰格式是固定的,秘鑰中間無空格無換行,秘鑰末尾也空格無換行,如下:

-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEedv+5NsbqAh6pjOMKF8I7FGaet3QMUi0g5xDfQAM219qqXnoPi2hmCMjR8MWJV/zyMZ6IiRG/pvrZ2ZhfDNFdW3ZSfHczRUvabABzWAr/57/eDBjswv4RQA+gUS6t8wFY/iV+O3i9+d79iN3VhUogfI33Ru3+RPFeFW88tYUhwIDAQAB-----END PUBLIC KEY----- -----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQDEedv+5NsbqAh6pjOMKF8I7FGaet3QMUi0g5xDfQAM219qqXnoPi2hmCMjR8MWJV/zyMZ6IiRG/pvrZ2ZhfDNFdW3ZSfHczRUvabABzWAr/57/eDBjswv4RQA+gUS6t8wFY/iV+O3i9+d79iN3VhUogfI33Ru3+RPFeFW88tYUhwIDAQABAoGAApzaO5QAg+gioLroEZOR2/UEisjafUPCg0ACynT1lLYwGSOCzv9QrQbwZK42HmvF0GCZnxMoJ1eIbEN2PZKgveQ/o4o8OdhuSk8pcDY72QwQHgSh1yfdvqkulo7Dvdmjz63DVSrknYRQFYSHIwUPVVTWyT80OTCYSn3JGqNKa9kCQQDZUbtlBvcPzP4T5hRaH9XvCh3PPusQKGPzVRVLn+qZ30N2PNgttYKRMshlz1WMts2ZAKr3b3BLT6GTshE5KatfAkEA53JkuV1vUEMg5j1ClgrwTs65yLWb+NbLH84xekrkkSxCkVjE7J/NQV7Uk87na49LuztBaECBmaZyTQnFKk7P2QJAMzcc18lVbmbcNipR/49jJquWrOHiGfO64nzZwPHWIx9H0dSzCcquE7QJIF1Fhx0JxRYwNJIRv93rcVhU0MjuNwJAIgI/JrXCC4sxpGNQC3gkA5CA4Cs/dfsp8cx8nLmwiFx2k6D1nseEg5yJpAZ9HuL5f9OfMtB3uroohYVwAV1/UQJBAIZQkryoOJxPbfWvIIGBOAlS/QqfE5kLV+3L2RUtBlacnJykMucrdDx1gVKgoREUElxpYtlWI17h9MeNXRICgIM=-----END RSA PRIVATE KEY-----2、加密(使用公鑰加密)

from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5import base64 # 加密message = 'Hello,This is RSA加密'rsakey = RSA.importKey(open('public.pem').read())cipher = Cipher_pkcs1_v1_5.new(rsakey) #創建用于執行pkcs1_v1_5加密或解密的密碼cipher_text = base64.b64encode(cipher.encrypt(message.encode(’utf-8’)))print(cipher_text.decode(’utf-8’))

加密結果:

Y1oivzbBDIEWX+NaXYLCJo5A226TmuemketZMUM3U80Rw3gSETjG5rHQ+S++Yao+iGQ5jSJA2yjkDtDAjdvi2VUz15LRSkdeKoliWnWy93KKl+aNEsBl3SUicATUgfNWU5ILo+DiltpF79AfIEhPptAz7+gN11KAf5LjfcQZ2+0=

這里每次使用公鑰加密后的結果都不一致,跟對數據的padding即填充有關。

加密時支持的最大字節數與證書有一定關系。加密時支持的最大字節數:證書位數/8 -11(比如:2048位的證書,支持的最大加密字節數:2048/8 - 11 = 245)

1024位的證書,加密時最大支持117個字節,解密時為128;2048位的證書,加密時最大支持245個字節,解密時為256。

如果需要加密的字節數超出證書能加密的最大字節數,此時就需要進行分段加密。

3、解密(使用私鑰解密)

from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5import base64 # 解密cipher_text = 'Y1oivzbBDIEWX+NaXYLCJo5A226TmuemketZMUM3U80Rw3gSETjG5rHQ+S++Yao+iGQ5jSJA2yjkDtDAjdvi2VUz15LRSkdeKoliWnWy93KKl+aNEsBl3SUicATUgfNWU5ILo+DiltpF79AfIEhPptAz7+gN11KAf5LjfcQZ2+0='encrypt_text = cipher_text.encode(’utf-8’)rsakey = RSA.importKey(open('private.pem').read())cipher = Cipher_pkcs1_v1_5.new(rsakey) #創建用于執行pkcs1_v1_5加密或解密的密碼text = cipher.decrypt(base64.b64decode(encrypt_text), '解密失敗')print(text.decode(’utf-8’))

解密結果,與加密前信息一致:

Hello,This is RSA加密4、加簽(使用私鑰加簽)

使用私鑰加簽,每次簽名是一致的。

from Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_5from Crypto.Hash import SHAimport base64 #加簽message = 'This is a request message...'rsakey = RSA.importKey(open('private.pem').read())signer = Signature_pkcs1_v1_5.new(rsakey)digest = SHA.new()digest.update(message.encode('utf-8'))sign = signer.sign(digest)signature = base64.b64encode(sign)print(signature.decode(’utf-8’))

簽名結果:

fd99fQpbH48VT9YQKepyHSip9pwrJkm1PN3ZykHNrfTVk555fv392E7MtbIfcligOCWUx8nd3g+7J0Fo3x+9G1Y6MJs0CuMCbA4qulUMNGjzUpsN1URorMZfPKjPvhf22ARH9qZEnebQ7UUGO3ioy4nylZONb3Ldhga+PKyxYTM=5、驗簽(使用公鑰驗簽)

from Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_5from Crypto.Hash import SHAimport base64 #驗簽message_verify = 'This is a request message...'signature = 'fd99fQpbH48VT9YQKepyHSip9pwrJkm1PN3ZykHNrfTVk555fv392E7MtbIfcligOCWUx8nd3g+7J0Fo3x+9G1Y6MJs0CuMCbA4qulUMNGjzUpsN1URorMZfPKjPvhf22ARH9qZEnebQ7UUGO3ioy4nylZONb3Ldhga+PKyxYTM='rsakey = RSA.importKey(open('public.pem').read())verifier = Signature_pkcs1_v1_5.new(rsakey)hsmsg = SHA.new()hsmsg.update(message_verify.encode('utf-8'))is_verify = verifier.verify(hsmsg, base64.b64decode(signature))print(is_verify)

驗簽結果:

True

以上就是python RSA加密的示例的詳細內容,更多關于python rsa加密的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 层流手术室净化装修-检验科ICU改造施工-华锐净化工程-特殊科室建设厂家 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 焊锡,锡膏,锡线,锡条,焊锡膏-绿志岛金属有限公司 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 江苏密集柜_电动_手动_移动_盛隆柜业江苏档案密集柜厂家 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 动物麻醉机-数显脑立体定位仪-北京易则佳科技有限公司 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 |