buuctf的RSA(二)

1.RSA

知道?? flag.enc? 和? pub.key,典型的加密、解密

將pub,key? 改為pub.txt

打開后發現公鑰

在RSA公私鑰分解 Exponent、Modulus,Rsa公私鑰指數、系數(模數)分解--查錯網? 進行解密

得到e=65537???

n=86934482296048119190666062003494800588905656017203025617216654058378322103517

在python中轉化,模數是16進制的n

然后求p和q

后面來編寫腳本

import gmpy2
import rsa
num = "C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD"
N = int(num,16)
E = 65537
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
D = int(gmpy2.invert(E,(p-1)*(q-1)))
privkey = rsa.PrivateKey(N, E, D, p, q)
with open("C:\\Users\\HP\\Desktop\\flag.enc", "rb+") as file:text = file.read()
message = rsa.decrypt(text,privkey)
print(N)
print(message)

代碼核心:

??????? 從一個給定的公鑰參數(N 和E)以及私鑰的兩個質數因子(p和 q)來創建一個 RSA 私鑰,并使用這個私鑰來解密一個文件。

??????????? 代碼首先導入 gmpy2和 rsa 模塊,然后定義了一系列變量,包括公鑰的模數 N、公鑰的指數 E、兩個質數 p,q,以及通過 gmpy2.invert 函數計算出的私鑰指數 D。

?????????? 接下來創建一個rsa.PrivateKey? 對象,并嘗試打開一個加密文件來讀取其內容。解密后的消息被存儲在 message變量中,最后打印出公鑰的模數 N 和解密后的消息。

補充:

???

RSA 加密/解密

???? 在 RSA 加密/解密過程中,公鑰用于加密數據,私鑰用于解密數據。在這個例子中,你已經使用了公鑰的模數 N 和指數 E 來模擬(盡管沒有實際加密過程)公鑰,并用私鑰的質數因子 p和 q 來計算私鑰指數 D,然后用這個私鑰來解密一個文件。

RSA 簽名/驗證簽名

????? 在 RSA 簽名/驗證簽名過程中,私鑰用于生成簽名,公鑰用于驗證簽名。簽名通常附加在原始消息之后,以證明消息的真實性和完整性。

使用 RSA 私鑰生成簽名的過程大致如下:

  1. 發送者使用哈希函數(如 SHA-256)對原始消息進行哈希處理,得到一個固定長度的哈希值。
  2. 發送者使用其 RSA 私鑰和哈希算法對哈希值進行簽名,生成一個簽名值。
  3. 發送者將原始消息和簽名值一起發送給接收者。

????? 有wp說,這一題屬于簽名(公鑰加簽),但是這是錯誤的,只有擁有私鑰的A才能生成有效的簽名,所以簽名可以作為A的身份驗證,這是沒有涉及RSA簽名及驗證,

我們一般說地加簽和減簽,是說公鑰解簽,私鑰加簽

??

?? 公鑰解簽:

????當發送者(例如A)想要發送一條消息給接收者(例如B)并確保消息的真實性和完整性時,A會使用自己的私鑰對消息進行簽名。這個過程通常涉及對消息的哈希值進行加密,生成一個簽名。

?????? A將原始消息和簽名一起發送給B

???? 私鑰加簽:

?????????? B收到消息和簽名后,使用A的公鑰對簽名進行解密,得到原始消息的哈希值。

???? ????? B同時會對原始消息進行哈希運算,得到另一個哈希值。

????????如果B使用A的公鑰解密簽名得到的哈希值和B自己對原始消息進行哈希運算得到的哈希值相同,那么B就可以確認這條消息是由A發送的,并且沒有被篡改。

2.RSARoll

?? 根據題目:

RSA roll!roll!roll!Only number and a-z(don't use editor which MS provide)

先來查一下什么叫Roll?

????? 這里說得是Roll按行加密,

前面兩個 數n,e,后面是密文c

?????? 提醒:不要總是覺得 密文C 就是一連串的字符串,密文C 也可以是分行的,記住不要把分行符刪除讓 密文C 變為一個字符串。應該按行進行解密

來上腳本

直接輸出string,只得到},分析一下,它算了很多次私鑰,每一次都使用的d都相同,

雖然沒有錯誤,但引起了混淆

我們修改一下,加上一段

?? flag+=string.decode()將每個解密后的字符串追加到flag變量中。這假設了每個密文解密后都直接對應一段可讀的文本,并且這些文本片段應該連續拼接。這在實際應用中可能并不總是正確的,特別是如果明文在加密前經過了某種形式的分割或編碼.

較好的代碼為:

import libnum
from Crypto.Util.number import long_to_byteslist1 = [# ... 你的密文列表 ...
]n = 920139713
q = 18443
p = 49891
e = 19# 計算私鑰的d部分,只需要做一次
phi_n = (p - 1) * (q - 1)
d = libnum.invmod(e, phi_n)for i in list1:c = i# 使用相同的d來解密所有的cm = pow(c, d, n)# 可能需要處理填充或轉換,這里只是簡單地將整數轉換為字節string = long_to_bytes(m)print(string)

結果:

合起來就可了

補充:

??? 歐幾里得算法

主要運用在計算模逆元(或乘法逆元)

詳細在中國剩余定理 - OI Wiki

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

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

相關文章

innerText和innerHTML的區別

innerHTML和innerText都是元素的屬性,通過修改這個元素的屬性可以達到修改元素內容的目的。但是二者之間略有不同。具體來說,它們的區別如下: innerHTML可以獲取或設置元素內部的HTML內容,包括HTML標簽,而innerText則…

LeetCode 79.單詞搜索

原題鏈接:. - 力扣(LeetCode) 給定一個 m x n 二維字符網格 board 和一個字符串單詞 word 。如果 word 存在于網格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內…

若依前后端分離版本-前后端交互整理

ruoyi-ui與后端交互 方法一:表單 使用 headers: {Content-Type:application/x-www-form-urlencoded}, ruoyi-ui的vue中 //ruoyi-ui的vue中定義 formData: {a: 111,b: 111,c: 1,}, //vue中方法調用 outBound() { empty(this.formData).…

6款網頁表白代碼6(附帶源碼)

6款網頁表白代碼6 前言效果圖及部分源碼1.愛心倒計時2.一起看星星3.愛心4.愛心(有鼠標移動特效)5.愛心(高級效果)6.愛心(3D效果) 領取源碼下期更新預報 前言 大部分人都有喜歡的人,學會這些表白…

藍橋杯物聯網競賽_STM32L071KBU6_關于sizo of函數產生的BUG

首先現象是我在用LORA發送信息的時候,左邊顯示長度是8而右邊接收到的數據長度卻是4 我以為是OLED顯示屏壞了,又或者是我想搞創新用了const char* 類型強制轉換數據的原因,結果發現都不是 void Function_SendMsg( unsigned char* data){unsi…

微軟Edge

微軟Edge瀏覽器概述 功能介紹 微軟Edge是一款基于Chromium開源項目的網頁瀏覽器,旨在提供更快的網頁加載速度、更高的安全性和更好的用戶體驗。它支持多種操作系統,包括Windows、macOS、Android和iOS,能夠滿足不同用戶的需求。Edge瀏覽器擁…

趕緊收藏!2024 年最常見 20道 Redis面試題(三)

上一篇地址:趕緊收藏!2024 年最常見 20道 Redis面試題(二)-CSDN博客 五、Redis的持久化機制是什么? Redis 是一個高性能的鍵值存儲系統,支持多種類型的數據結構,如字符串、哈希、列表、集合、…

python數據類型之字符串

目錄 1.字符串概念和注意事項 2.字符串內置函數 3.字符串的索引、切片和遍歷 4.字符串運算符 5.字符串常用方法 性質判斷 開頭結尾判斷 是否存在某個子串 大小寫等格式轉化 子串替換 刪除兩端空白字符 格式化字符串 分割與合并 6.字符串模板 7.exec 函數 8.字符…

【Linux】-Zookeeper安裝部署[17]

簡介 apache ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。 除了為Hadoop和H…

2024最新 Jenkins + Docker 實戰教程(四) - 編寫自己的Springboot項目實現自動化部署

😄 19年之后由于某些原因斷更了三年,23年重新揚帆起航,推出更多優質博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有堅忍不拔之志 🎐 個人CSND主頁——Mi…

VMware Num Lock 總自動切換的問題解決

VMware Num Lock 總自動切換的問題解決 0. 問題描述1. 解決方法 0. 問題描述 使用 VMware 虛擬機時,鼠標在 VMware 和主機之間切換時,總是顯示 “Num Lock 開” 和 “Num Lock 關” 的提示框。 1. 解決方法 在 VMware 系統中,按 fn num 統…

0407放大電路的頻率響應

放大電路的頻率響應 單時間常數RC電路的頻率響應中頻響應高頻響應低頻響應全頻域響應 放大電路頻率響應概述1. 直接耦合放大電路頻域響應阻容耦合放大電路頻域響應 4.7.1 單時間常數RC電路的頻率響應 4.7.2 放大電路頻率響應概述 4.7.3 單級共射極放大電路的頻率響應 4.7.4 單級…

TOSHIBA UTLH21 屬于Unifi NV系列

TOSHIBA UTLH21 是東芝推出的一款工業控制器,屬于Unifi NV系列。 這款控制器代表了東芝在工業自動化領域的一次重要進步,它在功能和性能上都超越了現有的V系列控制器。以下是UTLH21的一些主要特點: 高速邏輯與控制能力:UTLH21具…

Spring框架中獲取方法參數名稱:DefaultParameterNameDiscoverer

DefaultParameterNameDiscoverer 是Spring框架中用于獲取方法參數名稱的一個類。在Java中,方法的參數名稱通常在編譯時會丟失,因為Java字節碼并不強制要求保留這些信息。Spring提供了一種機制來恢復這些參數名稱,這就是通過DefaultParameterN…

IT行業的現狀與未來趨勢

這里寫目錄標題 一、引言二、IT行業的現狀三、IT行業面臨的挑戰四、IT行業的未來趨勢五、結論 一、引言 信息技術(IT)行業在過去幾十年中經歷了飛速發展,從早期的計算機硬件和軟件開發,到如今涵蓋云計算、人工智能、大數據、物聯…

深度學習之基于Django+Tensorflow卷積神經網絡實時口罩檢測系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景 隨著全球疫情的持續,佩戴口罩成為了公眾日常生活中不可或缺的一部分。特別是在人員密集的…

【python】python社交交友平臺系統設計與實現(源碼+數據庫)【獨一無二】

👉博__主👈:米碼收割機 👉技__能👈:C/Python語言 👉公眾號👈:測試開發自動化【獲取源碼商業合作】 👉榮__譽👈:阿里云博客專家博主、5…

BEVFuison測試全過程記錄

cuda版本10.1 pytorch: 根據cuda版本選擇pytorch版本: 1. 創建conda虛擬環境: conda create -y --name mmcv python3.8 conda activate mmcv2. 安裝依賴庫: pytorch: conda install pytorch1.7.1 torchvision0.8.2 torchaudi…

智能代理四大范式解析

Agent四大范式 在2024年紅杉資本人工智能峰會上,著名的人工智能專家吳恩達發表了一場備受關注的演講,深入探討了智能代理(agent)的四大范式。這四大范式代表了當前AI技術在不同應用領域中的核心方法和實踐,分別是反思(Reflection)、工具使用(Tool Use)、規劃(Planni…

特征融合篇 | YOLOv8改進之引入輕量級跨尺度特征融合模塊CCFM | 源自RT-DETR

前言:Hello大家好,我是小哥談。CCFM(Cross-Scale Feature Fusion Module)即為跨尺度特征融合模塊。這個模塊的作用是將不同尺度的特征通過融合操作整合起來,以增強模型對于尺度變化的適應性和對小尺度對象的檢測能力。CCFM可以有效地整合細節特征和上下文信息,從而提高模…