仿射密码加密解密C++实现

STM32MP135裸机开发实战:告别Linux,用HAL库+DDR+SD卡打造你的高性能实时应用 本文深入探讨了STM32MP135裸机开发实战,通过HAL库+DDR+SD卡启动方案,释放Cortex-A7内核的高性能实时潜力。文章详细介绍了裸机工程配置、DDR内存优化、SD卡启动流程及实时性能调优技巧,为工业自动化和高速数据采集等严苛场景提供高效解决方案。 阅读详情
//仿射密码加密算法
#include <stdio.h>
#include <string.h>
int k1, k2;
char T[50];
//加密函数
void encrypt() {
    int i, z = 0;
    int l = strlen(T);
    for (i = 0; i < l; i++) {
        //判断大小写
        if (T[i] >= 'A' && T[i] <= 'Z') {
            T[z] = (k1 * (T[i] - 'A') + k2) % 26 + 'A';
        }
        else if (T[i] >= 'a' && T[i] <= 'z') {
            T[z] = (k1 * (T[i] - 'a') + k2) % 26 + 'a';
        }
        else { //判断是否是空格
            T[z] = T[i];
        }
        z++;
    }
    printf("密文为:%s\n", T);
}
int main(void) {
    printf("请输入需要加密的明文\n");
    scanf_s("%[^\n]%*c", T);
    printf("请输入密钥k1\n");
    scanf_s("%d", &k1);
    printf("请输入密钥k2\n");
    scanf_s("%d", &k2);
    encrypt();
    return 0;
}

解密

import java.util.Scanner;

public class Fs {

    int x, y, q;

    int extend_Eulid(int a, int b) {
        if (b == 0) {
            x = 1;
            y = 0;
            q = a;
        } else {
            extend_Eulid(b, a % b);
            int temp = x;
            x = y;
            y = temp - a / b * y;
        }
        return x;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入需要解密的字符:");
        String s = scanner.nextLine();
        char str[] = s.toCharArray();
        int count = 1;
        int i, n, b, x, m;
        char y;
        Fangshe t = new Fangshe();
        int a[] = { 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 };

        for (b = 0; b < 26; b++) {
        }
        for (b = 0; b < 12; b++) {
            int ni = t.extend_Eulid(7, 26);

        }
        for (i = 0; i < s.length(); i++) {
            n = str[i] - 97;
            int ni = -11;
            x = ni * (n - 21);
            if (x >= 26 || x < 0) {
                while (x < 0) {
                    x = x + 26;
                }
                while (x >= 26) {
                    x = x - 26;
                }
            }
            y = (char) (x + 97);
            System.out.print(y);
        }
    }
}

原理:

仿射密码:设两个整数α和β,及gcd(α,26)=1,

加密过程:x → αx+β (mod 26)

解密过程:x → α*(x-β) (mod 26) 其中α•α*= 1(mod 26)

这种加密方法的密钥就是一对(α,β),对gcd(α,26)=1中的α有12种可能的选择,对β有26种选择(因为用mod 26来计算,所以仅需要考虑介于0~25之间的α和β,因此密钥值一共有12•26=312种选择。**

仿射密码破解——再别康桥 这里有用仿射加密的一段诗歌密文(空格标点等没有加密),请尝试还原为明文并翻译为中文 Ptfxgj Jnno-afv wn Htzaixojv Tjtxg Af Yd Mqxzn Kvif bdxvwsf X wtlv zf svtkv Tp bdxvwsf tp X htzv qviv; Bdxvwsf X rtkv jnno-afv Wn wqv inpf hsndop xg wqv rvp... 阅读详情

相关推荐

仿射密码破解文本

长文本仿射加密的解密详细流程

jiesibukeneng的博客 286

古典密码----仿射密码加解密

【代码】古典密码----仿射密码加解密。

小缪的博客 2043

作用域计算及仿射密码

二、 实验项目名称: 作用域计算及仿射密码 四、 实验原理: 作用域加法与乘法: 设定作用域p,将所要计算的两个数进行加法或乘法得到Z1,再对Z1进行对p求余计算(Z2 = Z1 % p),得到结果Z2。 如果Z1得到是为负数,需先经过计算(Z1 = Z1 % p, Z1 += p),保证Z1在作用域内。 仿射密码: a) 算法原理 仿射密码加密算法:C=Ek(m)=(k1m+k2)modn 仿射密码解密算法:M=Dk©=k3(c- k2) modn(其中k3×k1mod 26=1)。 i. 仿

m0_46786484的博客 546

放射密码c++(欧几里得算法)

仿射密码

weixin_65113709的博客 1443

现代密码学——古典密码算法实验

设计程序,实现一种置换密码(如列置换、周期置换)的密钥设定、加解密过程以及一种代换密码(如仿射密码、Playfair密码、维吉尼亚密码)的密钥设定、加解密过程。

weixin_45791919的博客 580

C++仿射密码加密与解密算法实战源码

本文还有配套的精品资源,点击获取 简介:仿射密码是一种基于线性替换和乘法变换的古老加密方法。通过C++编程实现该密码算法,不仅可以加深对密码学原理的理解,还能提升C++编程技能。本文介绍如何通过C++实现仿射密码的加密与解密过程,包括密钥的生成、字符的线性替换与乘法变换,以及模逆元的计算等技术细节。此外,还涉及字符处理、用户输入验证和面向对象编程的实践,为网络安全和数据加密...

weixin_35995661的博客 1610

密码学—仿射密码实验报告

古典密码算法实验报告 姓名:空の城 学号:你猜 专业班级:网络安全专业 一、实验目的 通过编程实现替代密码算法——仿射密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 二、实验原理 仿射密码的基本思想:加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是: C=Ek(m)=(k1m+k2)mod nC=Ek(m)=(k1m+k2)mod n M=Dk(c)=k1(...

空の城的博客 4976

密码学项目实战:MFC实现凯撒与仿射加密

MFC(Microsoft Foundation Classes)是一个用于简化Windows应用程序开发的C++库。它为开发者提供了大量预先构建的类,封装了Windows API,使得开发者可以不必深入了解底层API的细节就能开发出复杂的Windows应用程序。MFC支持单文档界面(SDI)、多文档界面(MDI)以及其他许多常用的功能,如菜单、工具栏、状态栏等。

weixin_33245447的博客 730

仿射密码的攻击

加法密码和乘法密码的结合就构成了仿射密码,仿射密码加密的思路为:首先将明文乘以密钥的一部分,然后再加上密钥的剩余部分。一、仿射密码加密解密算法假设c, m, a , b ∈Z26加密:ek(m) ≡c≡ a⋅m+ b mod 26解密:dk(c) = m= a-1⋅(c-b) mod 26密钥为:k =(a ,b ),且满足限制条件 gcd( a ,26)=1。当a=1时,仿射密码...

我的书包哪里去了 2485

仿射密码加密与解密C++源程序

在VC++6.0环境下运行过,附有结果的截图

【R语言-生存分析之观察生存率计算】

全人群肿瘤登记资料常用的统计分析指标包括发病率、死亡率、现患率以及生存率等,其中肿瘤生存率是评估肿瘤治疗效果和肿瘤负担的必要指标,其计算涉及肿瘤患者的发病、 死亡和随访三个方面的资料, 数据整理和计算过程均较为复杂, 如何及时、 准确地计算肿瘤生存率, 并使其可以在不同地区、 不同人群、不同时期间被客观公正地比较和评价,仍然是统计学家们一直在研究的主题。

weixin_46579654的博客 5439

C++:仿射密码加解密算法(附带源码)

C++:仿射密码加解密算法(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1918

如何实现MCGS与S7-200SMART PLC以太网多台通信控制?

第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。

u010670857的博客 6713

简单的加密与解密的实现---仿射密码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6...

weixin_34235105的博客 1587

MapGIS地质剖面图绘制实战:从数据准备到整饰出图

本文详细解析了MapGIS地质剖面图绘制的全流程,从数据准备到整饰出图,涵盖了等高线处理、GRD格网化、比例尺控制等关键步骤。通过实战技巧和案例分析,帮助地质工作者高效完成专业地质剖面图绘制,提升矿产勘探和工程勘察的工作效率。

weixin_28335283的博客 591

基于N32G003的PMBus从机协议栈设计与STM32F103模拟I2C主机通信实战

本文详细介绍了基于N32G003微控制器设计PMBus从机协议栈,并与STM32F103模拟I2C主机进行通信的实战方案。重点阐述了中断驱动架构、命令解析、CRC8优化及超时恢复机制,实现了在70kHz速率下稳定可靠的工业电源管理通信,适用于服务器电源、通信基站等成本敏感应用场景。

numpy6sculptor的博客 919

C++实现仿射密码:从古典密码原理到现代编程实践

密码学是信息安全的基础,其核心在于通过数学算法对信息进行加密与解密,确保数据的机密性和完整性。古典密码作为现代密码学的雏形,通过简单的数学变换(如模运算)实现字符替换,为理解加密原理提供了直观的入门途径。其中,仿射密码基于线性变换公式,结合模逆元等概念,在有限密钥空间内实现加解密,虽安全性有限,但极具教学价值。在工程实践中,通过C++实现仿射密码涉及模运算、扩展欧几里得算法、字符编码处理及文件I/O等核心编程技能,是学习算法实现和代码模块化设计的经典案例。本文以仿射密码为例,深入解析其数学原理与C++实现细

aoe41606的博客 711

特征模理论指导滤波天线设计的优势和方法

本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。

qq_64207806的博客 956

C++的各种用法展示

这段代码实现了一个函数,用于检查给定的整数是否为阿姆斯特朗数。power函数用于计算一个数的指定次幂。它使用了递归的方式来实现幂运算。当指数y为0时,返回1;当指数是偶数时,将问题分解为两个相同的子问题,并将它们相乘;当指数是奇数时,先计算结果的一半,再将其与原始数进行相乘。order函数用于计算一个数的位数。它通过对数学性质进行迭代计算来确定给定数的位数。在循环中,每次将给定数除以10并计数,直到数变成0为止。最后返回计数值,即为数字的位数。函数用于检查一个数是否为阿姆斯特朗数。该函数首先调用order。

shaozheng0503的博客 1555

Ubutntu下使用realsense d435i(二):获取某二维像素点的三维坐标

00 准备工作 准备工作包括安装驱动以及pyrealsense2,具体可参考上一篇: Ubutntu下使用realsense d435i(一):准备工作以及安装pyrealsense2 https://blog.youkuaiyun.com/gyxx1998/article/details/121461293 01 通过二维像素点获得物体三维坐标 这个在上一篇已经介绍了代码: realsense d435i获取某像素点三维坐标(计算深度和点云两种方法) https://blog.youkuaiyun.com/gyxx1998/

gyxx1998的博客 9943

matlab 点云泊松盘采样

本文介绍了泊松盘采样算法在三维点云处理中的应用。该算法通过最小间距约束(任意两点距离≥r)和均匀分布特性,生成高质量、均匀分布的点集。文章详细阐述了参数设置(如采样半径、候选点数),并与体素栅格、随机采样等方法进行了对比。代码实现部分展示了MATLAB版本的泊松盘采样算法,包括KD树加速和候选点生成机制。实验结果表明,该方法能有效保持点云特征,适用于点云简化、曲面重建等场景。文中还提供了参数调整建议和不同应用场景下的使用指导。

点云侠的博客 536

密码学学习记录(二)古典密码学之仿射密码

今天信息安全体系结构布置的cu

u013573306的专栏 1111

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3010

第三章 编程习题3.2.4 实现仿射密码

仿射密码理论了解到仿射密码是一种基于数学的简单替换加密技术,涉及到模算术和逆元的概念。认识到在实际应用中,选择正确的密钥(在本例中为a和b)是确保加密有效和可解的关键。模算术应用学习如何在编程中应用模算术,特别是在加密和解密的上下文中。了解如何计算最大公约数(GCD)来检查两个数是否互质,这对于确定加密函数是否可逆非常重要。扩展欧几里得算法掌握如何实现扩展欧几里得算法来计算乘法逆元,这在许多加密算法中都是一个重要组成部分。C++编程实践。

tang7mj的博客 681

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【现代密码学】4 种古典密码算法实战!从凯撒到多表代换,C++ 代码 + 测试案例手把手教

基础很重要:现代分组密码(比如 AES)的 “代换 - 置换” 思想,其实和古典代换密码一脉相承,懂古典算法能更好理解现代密码的设计逻辑;编程细节是关键:比如模运算处理负数、ASCII 码转换、互素判断,这些小细节在后续写加密代码时都会用到;从简单到复杂的思维:先搞定单表代换,再理解多表代换的 “抗破解” 思路,这种递进式学习很适合密码学入门。

2401_87520737的博客 1542

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: Python作业3
下一篇: DES加解密原理Java实现算法
超翔之逸
博客等级 码龄6年 4808粉丝 415原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超翔之逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值