RSA-e和phi不互素

1.題目

import gmpy2
import libnum
p = 165671388464282893752584125326556029512354679397368368220857653376434416617078001900277406804267355663751513682840337558216904117069008267677893985727230492593325173603042964427743989984503434019470910507115109513170452698000355325984181538737533266814217005071768519044490852862204995798270365958824235849109
q = 175651490687332204443530543796451733955950430025312028126121651885555378220332519727808277499974413469921166403868820510889929291685634889104148327524274922826871445228415469568630177323596856932622756981153120631004723510221017019084277515594390301668628385485041270510393136114778320441820348165683480429509
e = 867
c = 6660001775826165629475223259336063470824903598186378856629188913679962282858793440376297567100421858667621016533483512334538109479346679782212732404845310757840479720395378527082706256828554622756778693485769299876503864622653683484618754126624570844775655043102572727811993886306928017735680155402682728596637511542728152370291378415159847960544753739367663869108893974077536246398983936117278361731006622247248095303296948707291551372192438544963005437790454911837030171627510656854263564906498378877435418362195839052305558446674564302895256267149210518288365132749899457979906841577497745489758722670048505543942
n = p * q
phi_n = (p - 1) * (q - 1)
d = gmpy2.gcd(e // 6, phi_n)
m = pow(c, d, n)
#niyuan = gmpy2.invert(e, phi_n)
print(m)
print(libnum.n2s(int(m)))

2.e和phi不互素思路

首先我們要對RSA有基本的認知,私鑰如何求解d ≡ e?1 mod phi,那么如果gcd(e,phi)\neq1,不就是代表逆元不存在嗎?解密也就無法進行下去了。

假設gcd(e,phi)=t?=>gcd(e//t,phi)=1由t=gcd(e,phi),得出t1=e//t即gcd(t1,phi)=1所以私鑰dt1=invert(t1,phi)根據這個求出c=m^(e)%n=>c=m^(t1*t)%n=>c=(m^t)^(t1)%n,滿足gcd(t,phi)=1=>mt=c^(d1)%n,這里的mt=m^t最后開方求出m即可

3.解題腳本

import gmpy2 
import libnum  p = 165671388464282893752584125326556029512354679397368368220857653376434416617078001900277406804267355663751513682840337558216904117069008267677893985727230492593325173603042964427743989984503434019470910507115109513170452698000355325984181538737533266814217005071768519044490852862204995798270365958824235849109
q = 175651490687332204443530543796451733955950430025312028126121651885555378220332519727808277499974413469921166403868820510889929291685634889104148327524274922826871445228415469568630177323596856932622756981153120631004723510221017019084277515594390301668628385485041270510393136114778320441820348165683480429509
e = 867  # 公鑰指數(注意:與φ(n)不互質)
c = 6660001775826165629475223259336063470824903598186378856629188913679962282858793440376297567100421858667621016533483512334538109479346679782212732404845310757840479720395378527082706256828554622756778693485769299876503864622653683484618754126624570844775655043102572727811993886306928017735680155402682728596637511542728152370291378415159847960544753739367663869108893974077536246398983936117278361731006622247248095303296948707291551372192438544963005437790454911837030171627510656854263564906498378877435418362195839052305558446674564302895256267149210518288365132749899457979906841577497745489758722670048505543942n = p * q  
phi = (p - 1) * (q - 1)# 處理e與φ(n)不互質的情況
t = gmpy2.gcd(e, phi)  # 計算e和φ(n)的最大公約數
print(f"gcd(e,phi) = {t}")  # 調試輸出:查看gcd值t1 = e // t  # 將e分解為t和t1
assert gmpy2.gcd(t1, phi) == 1  # 驗證t1與φ(n)互質(關鍵檢查點)# 第二步:對互質部分進行正常RSA解密
dt1 = gmpy2.invert(t1, phi)  # 計算t1的模逆元(即d1 = t1^-1 mod φ(n))
mt1 = pow(c, dt1, n)  # 部分解密得到m^t mod n(因為c = (m^t)^t1 mod n)
print(f"m^t mod n = {mt1}") # 第三步:解決不互質部分(開t次方)
s, is_exact = gmpy2.iroot(mt1, t)  # 對m^t開t次方求m
assert is_exact  # 確保能完整開方(驗證m^t < n)
print(f"m = {s}")  # 調試輸出:查看解密后的明文數值flag = libnum.n2s(int(s))
print("Flag:", flag)  

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95623.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于單片機蒸汽壓力檢測/蒸汽余熱回收

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;單片機作品題目速選一覽表&#x1f680; &#x1f449;&#x1f449;&#x1f449;&#x1f449;單片機作品題目功能速覽&#x1f680; &#x1f525;更多文章戳&#x1f449;小新單片機-CSDN博客&#x1f68…

https 協議與 wss 協議有什么不同

HTTPS 是用于網頁數據傳輸的安全協議&#xff0c;而 WSS 是用于實時雙向通信&#xff08;如聊天、直播&#xff09;的安全協議&#xff0c;二者的設計目標、應用場景、底層邏輯均存在本質區別。以下從 7 個核心維度展開對比&#xff0c;并補充關鍵關聯知識&#xff0c;幫助徹底…

主流分布式數據庫集群選型指南

以下是關于主流分布式可擴展數據庫集群的詳細解析&#xff0c;涵蓋技術分類、代表產品及適用場景&#xff0c;幫助您高效選型&#xff1a;一、分布式數據庫核心分類 1. NewSQL 數據庫&#xff08;強一致性 分布式事務&#xff09;產品開發方核心特性適用場景TiDBPingCAPHTAP架…

#T1359. 圍成面積

題目描述編程計算由“*”號圍成的下列圖形的面積。面積計算方法是統計*號所圍成的閉合曲線中水平線和垂直線交點的數目。如下圖所示&#xff0c;在1010的二維數組中&#xff0c;有“*”圍住了15個點&#xff0c;因此面積為15。輸入1010的圖形。輸出輸出面積。樣例輸入數據 10 0…

Hive on Tez/Spark 執行引擎對比與優化

在大數據開發中,Hive 已經成為最常用的數據倉庫工具之一。隨著業務數據規模的不斷擴大,Hive 默認的 MapReduce 執行引擎 顯得笨重低效。為了提升查詢性能,Hive 支持了 Tez 和 Spark 作為底層執行引擎。本文將帶你對比 Hive on Tez 與 Hive on Spark 的區別,并分享調優經驗。…

深入理解 Next.js 的路由機制

深入理解 Next.js 的路由機制 作者&#xff1a;碼力無邊在上一篇文章中&#xff0c;我們成功創建并運行了第一個 Next.js 應用。當你打開項目文件夾時&#xff0c;你可能會注意到一個名為 pages 的目錄。這個目錄看似普通&#xff0c;但它卻是 Next.js 路由系統的核心。今天&am…

modbus_tcp和modbus_rtu對比移植AT-socket,modbus_tcp雜記

modbus_rtu通信時沒有連接過程&#xff0c;主機和從機各自初始化自身串口就行了&#xff0c;而rtu需要確定從機ID。注:在TCP連接中&#xff0c;不同的網卡有不同的IP&#xff0c;port對應具體的程序。/* 先讀取數據 */for (i 0; i < len; i){if (pdPASS ! xQueueReceive(re…

Docker Compose 詳解:從安裝到使用的完整指南

在現代容器化應用開發中&#xff0c;Docker Compose 是一個不可或缺的工具&#xff0c;它能夠幫助我們輕松定義和運行多容器的 Docker 應用程序。 一、什么是 Docker Compose&#xff1f; Docker Compose 是 Docker 官方提供的一個工具&#xff0c;用于定義和運行多容器 Dock…

springboot配置多數據源(mysql、hive)

MyBatis-Plus 不能也不建議同時去“控制” Hive。它從設計到實現都假定底層是 支持事務、支持標準 SQL 方言 的 關系型數據庫&#xff08;MySQL、PostgreSQL、Oracle、SQL Server 等&#xff09;&#xff0c;而 Hive 兩者都不完全符合。如果操作兩個數據源都是mysql或者和關系數…

2025年上海市星光計劃第十一屆職業院校技能大賽高職組“信息安全管理與評估”賽項交換部分前6題詳解(僅供參考)

1.北京總公司和南京分公司有兩條裸纖采用了骨干鏈路配置,做必要的配置,只允許必要的Vlan 通過,不允許其他 Vlan 信息通過包含 Vlan1,禁止使用 trunk鏈路。 骨干鏈路位置??:總公司 SW 與分公司 AC 之間的兩條物理鏈路(Ethernet 1/0/5-6 必要 VLAN??: ?總公司:Vlan…

學習nginx location ~ .*.(js|css)?$語法規則

引言 nginx作為一款高性能的Web服務和反向代理服務&#xff0c;在網站性能優化中扮演著重要的角色。其中&#xff0c;location指令的正確配置是優化工作的關鍵之一。 這篇記錄主要解析location ~ .*\.(js|css)?$這一特定的語法規則&#xff0c;幫助大家理解其在nginx配置中的…

Nmap網絡掃描工具詳細使用教程

目錄 Nmap 主要功能 網絡存活主機發現 (ARP Ping Scan) 綜合信息收集掃描 (Stealth SYN Service OS) 全端口掃描 (Full Port Scan) NSE 漏洞腳本掃描 SMB 信息枚舉 HTTP 服務深度枚舉 SSH 安全審計 隱蔽掃描與防火墻規避 Nmap 主要功能 Nmap 主要有以下幾個核心功能…

Spring Boot 3.x 的 @EnableAsync應用實例

語法結構使用 EnableAsync 其實就像為你的應用穿上一件時尚的外套&#xff0c;簡單又高效&#xff01;只需在你的配置類上添加這個注解&#xff0c;輕松開啟異步之旅。代碼如下&#xff1a;想象一下&#xff0c;你的應用一瞬間變得靈活無比&#xff0c;像一個跳舞的機器人&…

Nginx Tomcat Jar包開機啟動自動配置

一、Nginx配置1、創建systemd nginx 服務文件vi /usr/lib/systemd/system/nginx.service### 內容[Unit] DescriptionThe nginx HTTP and reverse proxy server Afternetwork.target[Service] Typeforking ExecStartPre/mnt/nginx/sbin/nginx -t ExecStart/mnt/nginx/sbin/nginx…

修訂版!Uniapp從Vue3編譯到安卓環境踩坑記錄

Uniapp從Vue3編譯到安卓環境踩坑記錄 在使用Uniapp開發Vue3項目并編譯到安卓環境時&#xff0c;我遇到了不少問題&#xff0c;現將主要踩坑點及解決方案整理如下&#xff0c;供大家參考。 1. 動態導入與靜態導入問題 問題描述&#xff1a; 在Vue3項目中使用的動態導入語法在Uni…

零售消費企業的數字化增長實踐,2025新版下載

當下零售消費行業&#xff0c;早不是有貨就好賣的時代了。一方面&#xff0c;前兩年消費市場的熱度催生出大批新品牌入場&#xff0c;供給端瞬間擁擠&#xff1b;另一方面&#xff0c;消費者獲取信息越來越容易&#xff0c;新潮流、新觀念幾天一個變化。企業想穩住增長、必須要…

[網鼎杯 2020 青龍組]AreUSerialz

BUUCTF在線評測BUUCTF 是一個 CTF 競賽和訓練平臺&#xff0c;為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9D%AF%202020%20%E9%9D%92%E9%BE%99%E7%BB%84]AreUSerialz啟動靶機&#xff0c;頁面顯示php代碼 <?phpincl…

貴州移動創維E900V22F-S905L3SB-全分區備份

貴州移動創維E900V22F-S905L3SB-全分區備份刷機教程&#xff1a;請查看壓縮包內教程&#xff01;下載地址&#xff1a;鏈接: https://pan.baidu.com/s/1EyYgLNZlxv-UvHpmTRxA_g?pwd5v8w 提取碼: 5v8w鏈接&#xff1a;https://www.123pan.com/s/Jbe8Vv-dTMN 提取碼:0123備用鏈接…

springboot redis 緩存入門與實戰

Spring Boot3 Redis 項目地址https://gitee.com/supervol/loong-springboot-study&#xff08;記得給個start&#xff0c;感謝&#xff09;Redis 介紹Redis 是一款高性能的 內存數據庫&#xff08;支持持久化&#xff09;&#xff0c;兼具緩存、NoSQL 存儲、分布式鎖等核心能力…

Redis緩存三大經典問題:雪崩、穿透、擊穿詳解

在高并發系統中&#xff0c;Redis作為高性能的內存緩存數據庫&#xff0c;緩存可能會引發一系列嚴重問題——緩存雪崩、緩存穿透、緩存擊穿。一、緩存雪崩&#xff08;Cache Avalanche&#xff09;1. 什么是緩存雪崩&#xff1f;緩存雪崩是指大量緩存數據在同一時間集中失效&am…