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

第三次作业(密码学)

#include <stdio.h>
#include <stdlib.h>

// 计算最大公约数
int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }

    return a;
}

// 计算模幂运算
int mod_pow(int base, int exponent, int modulus) {
    int result = 1;
    base = base % modulus;

    while (exponent > 0) {
        if (exponent % 2 == 1) {
            result = (result * base) % modulus;
        }

        exponent = exponent >> 1;
        base = (base * base) % modulus;
    }

    return result;
}

// 生成密钥
void generate_keys(int p, int q, int *e, int *d, int *n) {
    *n = p * q;
    int phi = (p - 1) * (q - 1);

    // 选择e
    for (*e = 2; *e < phi; (*e)++) {
        if (gcd(*e, phi) == 1) {
            break;
        }
    }

    // 计算d
    for (*d = 2; *d < phi; (*d)++) {
        if ((*e * *d) % phi == 1) {
            break;
        }
    }
}

// 加密
int encrypt(int plaintext, int e, int n) {
    return mod_pow(plaintext, e, n);
}

// 解密
int decrypt(int ciphertext, int d, int n) {
    return mod_pow(ciphertext, d, n);
}

int main() {
    int p = 61;
    int q = 53;
    int e, d, n;

    // 生成密钥
    generate_keys(p, q, &e, &d, &n);

    int plaintext = 65;
    printf("明文: %d\n", plaintext);

    // 加密
    int ciphertext = encrypt(plaintext, e, n);
    printf("密文: %d\n", ciphertext);

    // 解密
    int decrypted = decrypt(ciphertext, d, n);
    printf("解密后的明文: %d\n", decrypted);

    return 0;
}

相关文章:

  • 4、CMake基础:日志、变量操作和宏定义
  • 跨越养生误区雷区,迈向科学养生大道
  • Python项目打包部署
  • node.js 实战——mongoDB 续一
  • 在阿里云实例上部署通义千问QwQ-32B推理模型
  • Linux基础篇、第一章_01_3安装虚拟机手动安装部署Ubuntu22.04服务器
  • Maven根据Google proto文件自动生成java对象
  • Vue基础(一) 基础用法
  • uniapp 小程序 安卓苹果 短视频解决方案
  • 云数据中心整体规划方案PPT(113页)
  • 怎样学习Electron
  • Reverse-WP记录9
  • rust 全栈应用框架dioxus
  • LeetCode58_最后一个单词的长度
  • 创龙全志T536全国产(4核A55 ARM+RISC-V+NPU 17路UART)工业开发板硬件说明书
  • 电子电器框架 --- 数据连接性和云集成在增强电气/电子架构方面的作用
  • 技术白皮书:Oracle GoldenGate 优势
  • Flip PDF Plus Corp7.7.22电子书制作软件
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(5):MCP之微服务架构
  • c/c++之信号处理<signal.h>
  • 农业农村部:把住能繁母猪存栏量“总开关”,引导养殖场户优化母猪存栏结构、合理控制产能
  • 比熬夜更伤肝的事,你可能每天都在做
  • 一周人物|卡鲁等入围英国特纳奖,李学明新展中国美术馆
  • 法治日报调查直播间“杀熟”乱象:熟客越买越贵,举证难维权不易
  • 夜读丨怀念那个写信的年代
  • 多地征集农村假冒伪劣食品违法线索,全链条整治“三无”产品