当前位置: 首页 > news >正文

Rabin加解密算法(python3)

Rabin加解密算法

详细代码如下:

# 空空
# dahouzi.cn
import random
from sympy import isprimedef decrypt_rabin(c, p, q):"""解密 Rabin 密文Args:c (int): 密文p (int): 素数 pq (int): 素数 qReturns:tuple: 解密结果 M1, M2, M3, M4"""n = p * q# 计算 m1, m2, m3, m4m1 = pow(c, (p + 1) // 4, p)m2 = (-m1) % pm3 = pow(c, (q + 1) // 4, q)m4 = (-m3) % q# 计算 a, ba = q * ModReverse(q, p)b = p * ModReverse(p, q)# 计算解密结果 M1, M2, M3, M4M1 = (a * m1 + b * m3) % nM2 = (a * m1 + b * m4) % nM3 = (a * m2 + b * m3) % nM4 = (a * m2 + b * m4) % nreturn M1, M2, M3, M4def ModReverse(a, n):"""计算模逆Args:a (int): 整数n (int): 模数Returns:int: a 在模 n 下的逆"""arr = [0, 1]gcd = EX_GCD(a, n, arr)if gcd == 1:return (arr[0] % n + n) % nelse:return -1def EX_GCD(a, b, arr):"""计算扩展欧几里得算法Args:a (int): 整数 ab (int): 整数 barr (list): 结果数组Returns:int: 最大公约数"""if b == 0:arr[0] = 1arr[1] = 0return ag = EX_GCD(b, a % b, arr)t = arr[0]arr[0] = arr[1]arr[1] = t - a // b * arr[1]return gdef rabin_encrypt(plaintext, p, q):"""Rabin 加密Args:plaintext (int): 明文p (int): 素数 pq (int): 素数 qReturns:int: 密文"""# 计算公钥 nn = p * q# 计算密文ciphertext = pow(plaintext, 2, n)return ciphertext# 示例用法p = 19
q = 23
plaintext = 183
ciphertext = rabin_encrypt(plaintext, p, q)
print("---------message-----------")
print("plaintext:", plaintext)
print("ciphertext:", ciphertext)print("---------public key[n]、private key[p、q]------------")
print("p:", p)
print("q:", q)
print("n:", p * q)
#print("---------公钥n、私钥p、q------------")# 解密
M1, M2, M3, M4 = decrypt_rabin(ciphertext, p, q)
print("---------Decrypt------------")
print("M1:", M1)
print("M2:", M2)
print("M3:", M3)
print("M4:", M4)
#print("---------解密------------")

相关文章:

Rabin加解密算法(python3)

Rabin加解密算法 详细代码如下: # 空空 # dahouzi.cn import random from sympy import isprimedef decrypt_rabin(c, p, q):"""解密 Rabin 密文Args:c (int): 密文p (int): 素数 pq (int): 素数 qReturns:tuple: 解密结果 M1, M2, M3, M4"&q…...

【带头学C++】----- 七、链表 ---- 7.5 学生管理系统(链表--上)

目录 1.main函数设计 2.定义Node节点类型 3.链表插入结点 在main函数中调用插入函数、打印函数 插入结点函数实现(头插法) 插入结点函数实现(尾插法) 遍历链表函数实现 4.演示插入、遍历结果 目录 1.main函数设计 2.定义…...

(四)什么是Vite——冷启动时vite做了什么(源码、middlewares)

vite分享ppt,感兴趣的可以下载: ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录: (一)什么是Vite——vite介绍与使用-CSDN博客 (二)什么是Vite——Vite 和 Webpack 区别&#xff0…...

Docker部署MinIO对象存储服务器结合Cpolar实现远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远…...

C#入门(1):程序结构、数据类型

一、C#程序结构 第一个C#程序 using System;namespace base_01 {class Program{#region 代码折叠块static void Main(string[] args){//控制台输出Console.WriteLine("Hello World!");Console.Write("C#是微软的编程语言"); //不换行输出//Console.Rea…...

Scala---元组

1、元组定义 与列表一样,与列表不同的是元组可以包含不同类型的元素。元组的值是通过将单个的值包含在圆括号中构成的。 2、创建元组与取值 val tuple new Tuple(1) 可以使用newval tuple2 Tuple(1,2) 可以不使…...

【Linux】冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、进程地址空间

目录 一、冯诺依曼体系结构二、操作系统(OS)1. 操作系统是什么2. 操作系统如何做管理3. 系统调用和库函数概念 三、进程1. 进程是什么?2. 描述进程-PCB3. 查看进程的方法 四、进程状态1 运行、阻塞和挂起状态2 Linux中的进程状态 五、进程优先级1. 什么是优先级2.查…...

【hive-解决】HiveAccessControlException Permission denied: CREATEFUNCTION

文章目录 一.任务描述二. 解决 一.任务描述 Error while compiling statement: FAILED: HiveAccessControlException Permission denied: Principal [nameroot, typeUSER] does not have following privileges for operation CREATEFUNCTION [ADMIN PRIVILEGE on INPUT, ADMIN…...

内网穿透的应用-通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...

解决 uniapp 开发微信小程序 不能使用本地图片作为背景图 问题

参考博文:uniapp微信小程序无法使用本地静态资源图片(背景图在真机不显示)的解决方法_javascript技巧_脚本之家 问题:uniapp 开发微信小程序,当使用本地图片作为 background-image 时,真机无法显示 解决: 方法一&am…...

常用中间件封装思路粗记

MQ 自定义注解 ,编写配置类在bean属性初始化SmartInitializingSingleton#afterSingletonsInstantiated后至处理器 去扫描有自定义注解的bean,去创建对应消费者的容器 并启动消费者容器类主要组件DefaultMQPushConsumer SmartInitializingSingleton#afte…...

探索SPI:深入理解原理、源码与应用场景

文章目录 一、初步认识1、概念2、工作原理3、作用场景 二、源码分析1、ServiceLoader结构2、相关字段3、核心方法 三、案例connector连接器小案例1、新建SPI项目2、创建扩展实现项目1-MongoDB3、创建扩展实现项目2-Oracle4、测试 Spring应用1、创建study工程2、创建forlan-test…...

Web3名词解释

Web3名词解释 以太坊 ERC20 Defi去中心化金融 Defi是Decentralized Finance的英文缩写。 简单理解点就是与传统的高度中心化金融体系相比,去中心化金融是通过区块链技术,比如基于区块链技术开发的手机钱包软件,通过智能合约代码以实现去除…...

Vatee万腾外汇市场新力量:vatee科技决策力

在当今数字化时代,Vatee万腾崭露头角,以其强大的科技决策力进军外汇市场,成为该领域的新力量。这一新动向将不仅塑造外汇市场的未来,也展现Vatee科技决策力在金融领域的引领作用。 Vatee万腾带着先进的科技决策力进入外汇市场&…...

【HarmonyOS开发】配置开发工具DevEco Studio

1、下载 注意: 1、安装过程中,一定要自定义安装位置,包比较大,包比较大,包比较大!!! 2、可以将该工具添加到右键中,否则,如果你的项目不是HarmonyOS&#xff…...

探索亚马逊大语言模型:开启人工智能时代的语言创作新篇章

文章目录 前言一、大语言模型是什么?应用范围 二、Amazon Bedrock总结 前言 想必大家在ChatGPT的突然兴起,大家多多少少都会有各种各样的问题,比如:大语言模型和生成式AI有什么关系呢?大语言模型为什么这么火&#xf…...

zabbix-proxy分布式监控

Zabbix是一款开源的企业级网络监控软件,可以监测服务器、网络设备、应用程序等各种资源的状态和性能指标。在大型环境中,如果只有一个Zabbix Server来监控所有的节点,可能会遇到性能瓶颈和数据处理难题。 为了解决这个问题,Zabbi…...

springboot生成PDF,并且添加水印

/*** 导出调查问卷*/ApiLog("导出调查问卷")PostMapping("/print/{id}")ApiOperationSupport(order 23)ApiOperation(value "导出报告", notes "导出报告")public void print(PathVariable Long id, HttpServletResponse response…...

Tensorflow2.0:CNN、ResNet实现MNIST分类识别

以下仅是个人的学习笔记 ,内容可能是错误 CNN: import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers# 导入数据 (x_train, y_train), (x_test, y_test) keras.datasets.mnist.load_data()# 数据预处理 x_tra…...

本地jar导入maven

一、通过dependency引入 1.1. jar包放置&#xff0c;建造lib目录 1.2. pom.xml文件 <dependency><groupId>zip4j</groupId><artifactId>zip4j</artifactId><version>1.3.2</version><!--system&#xff0c;类似provided&#x…...

告别野指针和内存泄漏:用Cppcheck给你的C/C++项目做个免费‘体检’(附VS项目集成教程)

用Cppcheck为C/C项目构建自动化代码质量防护网 在软件开发领域&#xff0c;代码质量直接影响着产品的稳定性和安全性。对于C/C这类系统级语言来说&#xff0c;内存泄漏、野指针等问题往往潜伏在代码深处&#xff0c;直到运行时才突然爆发。而静态代码分析工具就像一位经验丰富的…...

windows VS工具判断动态库是32位还是64位

dumpbin /headers yourfile.dll | findstr "machine"...

对比Token Plan与按量计费,如何为你的项目选择更经济的消费模式

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比Token Plan与按量计费&#xff0c;如何为你的项目选择更经济的消费模式 对于使用大模型API的开发者而言&#xff0c;成本控制是…...

全球AI范式变革与中国产业的破局路径

全球AI范式变革与中国产业的破局路径摘要当前全球人工智能产业正处于范式切换的关键节点&#xff0c;底层技术路线的竞争已经从参数规模竞赛转向认知框架的本质性革新。本文基于2026年行业最新发展动态&#xff0c;系统分析当前主流AI范式的内生性缺陷&#xff0c;梳理中美AI产…...

矿山灾害应急回溯:UWB离线即失联,无感定位全程轨迹留存

矿山灾害应急回溯&#xff1a;UWB离线即失联&#xff0c;无感定位全程轨迹留存矿山井下塌方、瓦斯超限、透水、顶板垮落等突发性灾害具备极强不可预判性&#xff0c;灾害发生后极易伴随断电断网、通信中断、组网瘫痪等状况。应急轨迹回溯、人员位置核查、救援路线规划&#xff…...

避坑指南:S32K3 AUTOSAR环境安装后,如何验证MCAL配置与工程创建?

S32K3 AUTOSAR开发实战&#xff1a;从环境验收到MCAL配置全流程解析 当S32DS、EB tresos和RTD驱动安装完成后&#xff0c;许多开发者会陷入"工具链已就位&#xff0c;但不知从何入手"的困境。本文将带您跨越从环境安装到可编译工程的关键步骤&#xff0c;重点解决三个…...

Amphenol ICC ND9ACC2E0A线束组件应用解析与国产兼容思路

在工业互连和高速设备快速发展的今天&#xff0c;线束组件的重要性已经远远超过传统意义上的“导线连接”。尤其是在服务器、工业控制、通信设备以及智能制造领域&#xff0c;高性能线束已经成为保障系统稳定运行的重要组成部分。 近期&#xff0c;Amphenol ICC&#xff08;Com…...

AI调用BurpSuite实现可审计漏洞检测闭环

1. 这不是“AI安全工具”的营销话术&#xff0c;而是一套可落地的漏洞发现流水线最近帮一家做金融SaaS的客户做渗透测试流程优化&#xff0c;他们原来的方案是&#xff1a;每周安排2名中级渗透工程师&#xff0c;用BurpSuite手动跑一遍核心业务流&#xff0c;再人工翻看Proxy历…...

WidescreenFixesPack:让经典游戏在宽屏显示器上重获新生的终极解决方案

WidescreenFixesPack&#xff1a;让经典游戏在宽屏显示器上重获新生的终极解决方案 【免费下载链接】WidescreenFixesPack Plugins to make or improve widescreen resolutions support in games, add more features and fix bugs. 项目地址: https://gitcode.com/gh_mirrors…...

AI如何悄然重塑日常生活:从工具到环境的四层渗透

1. 这不是未来预告&#xff0c;是此刻正在发生的日常渗透“AI正在 quietly taking over your daily life”——这句话里最值得玩味的&#xff0c;不是“AI”&#xff0c;也不是“taking over”&#xff0c;而是那个轻描淡写的quietly&#xff08;悄然地&#xff09;。它不敲锣打…...