模運算(密碼學/算法)

1 什么是模運算

  • 模運算的概念
    • 模運算是一種算術運算,常寫作a mod n,表示整數a除以正整數n后的余數。
      模數是模運算中的除數n,它決定了結果的范圍。
  • 公式表達:
    • 對于任意整數a和正整數n,可以將a表示為:a = qn + r,其中0 ≤ r < n,q是整數商,即q = ?a/n?。
      a除以n的余數是a mod n。
  • 示例:
    • 11 mod 7 = 4(11除以7的余數是4)
    • -11 mod 7 = 3(-11除以7的余數是3)

2 模運算性質

  • 同余關系:

    • 當兩個整數a和b除以同一個正整數n得到相同的余數時,稱a和b模n同余。
      表達式為a ≡ b (mod n)。
    • 同余具有傳遞性 a ≡ b (mod n) and b ≡ c (mod n) 則 a ≡ c (mod n)
  • 模運算(加,減,乘)

    • (a + b) mod n = [(a mod n) + (b mod n)] mod n
    • (a + b) mod n = [(a mod n) + (b mod n)] mod n
    • (a * b) mod n = [(a mod n) * (b mod n)] mod n
  • 模除運算(逆運算)
    模除運算跟實際意義上的除法并不相同,比如

    • 逆元,如果有如下公式成立
      (a′?a)mod(n)=1 (a^{'} * a) mod (n) = 1 (a?a)mod(n)=1
      則稱 a′a^{'} a 為 a 在模n下的一個逆元。
    • 逆元的作用
      逆元在模除的場景下需要使用到,比如在如下取模運算中
      ((avmod(n))?v)mod(n)(( \frac{a}{v} mod(n)) * v) mod(n)((va?mod(n))?v)mod(n)
      如下面例子所示:
      ((1033mod(5))?3)mod(5)=1( (\frac{103}{3} mod(5)) * 3 ) mod(5) = 1((3103?mod(5))?3)mod(5)=1
      我們希望通過計算機運算的結果為整數3,由于計算機計算精度有限,就會導致實際運算的結果可能為2.999… ,特別是存在多次模除的時候,就會導致實際進行嚴重下降,計算機處理過程如下:
      (1033mod(5))?3)mod(3)=((34.333.........)mod(5))?3)mod(5)=(4.333......?3)mod(5)=12.999....mod(5)=2.999... \begin{aligned} &(\frac{103}{3}mod(5)) * 3 ) mod(3) \\ & = ( (34.333......... )mod(5)) * 3 ) mod(5) \\ &= (4.333...... * 3) mod(5) \\ &=12.999.... mod(5) \\ &= 2.999... \end{aligned} ?(3103?mod(5))?3)mod(3)=((34.333.........)mod(5))?3)mod(5)=(4.333......?3)mod(5)=12.999....mod(5)=2.999...?
      故通過逆元的存在將模除過程中的除法運算改為乘法運算,證明如下:

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

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

相關文章

海康相機的 HB 模式功能詳解

海康相機的 HB 模式是一種無損壓縮技術,全稱為High Bandwidth 模式,主要用于提升工業相機在高速場景下的數據傳輸效率。其核心原理是通過硬件級無損壓縮算法對原始圖像數據進行壓縮,在不損失畫質的前提下減少數據量,從而突破千兆網絡的帶寬限制,實現更高的行頻和傳輸幀率。…

electron應用開發:命令npm install electron的執行邏輯

我們來徹底解析 npm install electron 這個命令背后的完整執行邏輯。這是一個非常精妙的過程&#xff0c;遠不止下載一個簡單的 JavaScript 包那么簡單。理解了它&#xff0c;你就能透徹地明白 Electron 開發環境的運作原理&#xff0c;并能輕松解決各種安裝問題。 npm instal…

Visual Studio 2022不同項目設置不同背景圖

ClaudiaIDE Visual Studio 地址&#xff1a;https://marketplace.visualstudio.com/items?itemNamekbuchi.ClaudiaIDE&ssrfalse#overviewgithub 地址&#xff1a;https://github.com/buchizo/ClaudiaIDE/ 這是一個Visual Studio擴展&#xff0c;可以讓你設置自定義背景圖…

React頁面使用ant design Spin加載遮罩指示符自定義成進度條的形式

React頁面使用ant design Spin加載遮罩指示符自定義成進度條的形式具體實現&#xff1a;import React, { useState, useEffect, } from react; import { Spin, Progress, } from antd; import styles from ./style.less;const App () > {// 全局加載狀態const [globalLoadi…

TCP并發服務器構建

TCP并發服務器構建&#xff1a; 單循環服務器&#xff1a;服務端同一時刻只能處理單個客戶端的任務 并發服務器&#xff1a;服務端同一時刻能夠處理多個客戶端的任務 產生多個套接字可建立多個連接&#xff1a;TCP服務端并發模型&#xff1a; 1&#xff1a;使用多進程 頭文件&a…

優選算法-常見位運算總結

1.基礎位運算&#xff1a; >> :右移運算符&#xff1a; 邏輯右移&#xff08;無符號數&#xff09;&#xff1a;高位補 0&#xff0c;低位直接丟棄。 示例&#xff1a;8 >> 2&#xff08;二進制 1000 右移 2 位&#xff09;結果為 0010&#xff08;十進制 2&#…

記一次MySQL數據庫的操作練習

數據庫基礎使用數據庫的操作&#xff1a;1.使用命令行連接數據庫。在命令行鍵入”mysql -u root -p”命令。2.列出MySQL數據庫管理系統的數據庫列表。在命令行鍵入”show databases;”命令。3.創建數據庫。在命令行鍵入”create database database_name;”命令。使用”show dat…

C++STL-list 底層實現

目錄 一、實現框架 二、list_node節點類的模擬實現 節點構造函數 三、list_iterator迭代器的模擬實現 迭代器類的模板參數說明 構造函數 *運算符重載 運算符的重載 --運算符的重載 運算符的重載 !運算符的重載 list的模擬實現 默認成員函數 構造函數 拷貝構造函…

解決網站圖片加載慢:從架構原理到實踐

在當前的數字商業環境中&#xff0c;用戶的在線體驗至關重要。當一個潛在客戶訪問企業網站或電商平臺時&#xff0c;如果頁面加載過程遲緩&#xff0c;特別是圖片和視頻內容無法快速顯示&#xff0c;用戶的耐心會迅速耗盡。研究數據表明&#xff0c;網站加載時間與用戶跳出率和…

windows注冊表:開機自啟動程序配置

目錄 一、注冊表位置 系統范圍的開機自啟動程序 當前用戶的開機自啟動程序 二、配置步驟 三、注意事項 四、其他方法 任務計劃程序 啟動文件夾 1. 創建程序快捷方式 2. 打開 Startup 文件夾 3. 將快捷方式移動到 Startup 文件夾 4. 驗證程序是否自動啟動 注意事項 …

(11)用于無GPS導航的制圖師SLAM(一)

文章目錄 前言 1 安裝 RPLidar 和 Pixhawk 2 檢查 RPLidar 的串行端口 3 安裝更多軟件包 4 創建Catkin工作空間 5 安裝 RPLidar 節點 6 安裝 Google Cartographer 前言 本頁展示了如何使用 RPLidarA2 激光雷達(RPLidarA2 lidar)設置 ROS 和 Google Cartographer SLAM&a…

車載診斷架構 --- 基于整車功能的正向診斷需求開發

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

字帖生成器怎么用?電腦手機雙端操作指南

字帖生成器是一款支持電腦端和手機端的免費練字工具&#xff0c;可一鍵生成PDF格式字帖并直接打印使用。本文基于官方公開版本&#xff0c;提供無廣告、無營銷的實測操作指南。 工具基礎信息 軟件名稱&#xff1a;字帖生成器適用設備&#xff1a;Windows、安卓/鴻蒙核心功能&…

pycharm 遠程連接服務器報錯

配置遠程鏈接的時候出現報錯 Command finished with exit code 139 Execution was killed due to timeout Failed to execute command Rsync command ‘rsync’ was not found neither in local PATH nor as full executable path Starting introspection for Python… 放假前好…

局域網共享文件夾

準備工作&#xff1a; A電腦&#xff08;共享端&#xff09; B電腦&#xff08;本機&#xff09;在A電腦&#xff0c;選好要共享的目錄&#xff0c;然后右鍵屬性 > 高級共享 > 共享此文件夾 > 權限(全開)然后找到此電腦&#xff0c;右鍵&#xff0c;打開屬性&#xff…

時序數據庫全景指南:從場景選型到內核拆解

1. 什么是時序數據 時序數據&#xff08;Time-Series Data&#xff09; 是在時間上連續產生、且帶有時間戳的觀測值序列&#xff0c;典型特征&#xff1a;維度描述高并發寫百萬點/秒&#xff0c;追加為主寫多讀少90 % 查詢是降采樣或聚合時效性越新越熱&#xff0c;舊數據價值遞…

深入解析 Oracle 內存架構:駕馭 SGA 與 PGA 的性能藝術

引言&#xff1a;數據庫的心臟與大腦如果說磁盤上的數據文件是 Oracle 數據庫的“身體”&#xff0c;是永久存儲的基石&#xff0c;那么內存結構就是其“心臟與大腦”。它負責所有計算活動的發生&#xff0c;決定了數據泵送的速度與效率。一個配置得當、運行順暢的內存體系&…

竣工驗收備案識別技術:通過AI和OCR實現智能化文檔處理,提升效率與準確性,推動建筑行業數字化轉型。

竣工驗收備案是建設工程項目投入使用的最終法定程序&#xff0c;是確保工程符合規劃、質量、消防、環保等各項要求的核心關口。傳統的備案流程依賴大量紙質文檔和人工審核&#xff0c;效率低下且易出錯。隨著人工智能與大數據技術的崛起&#xff0c;竣工驗收備案識別技術應運而…

76 最小覆蓋子串

76 最小覆蓋子串 文章目錄76 最小覆蓋子串1 題目2 解答1 題目 給你一個字符串 s 、一個字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串&#xff0c;則返回空字符串 "" 。 注意&#xff1a; 對于 t 中重復字符&#xff0c;…

趣味學Rust基礎篇(變量與可變性)

這篇文章將用通俗的比喻和清晰的邏輯&#xff0c;帶你深入理解 Rust 變量背后的核心思想&#xff0c;讓你不僅“會用”&#xff0c;更能“明白為什么”。 Rust 的“盒子哲學”&#xff1a;變量、可變性、常量與隱藏 想象一下&#xff0c;Rust 里的變量就像一個個盒子。你把值&a…