密码学
字数: 0

数学基础

原根

对于一个给定的素数 p,如果存在一个整数 ,满足以下条件
  • 对模 取余的结果都不相同。
  • 对模 取余的结果为 1。

模幂运算

Modular exponentiation
高效地计算形如 的数学运算结果。

具体步骤

  1. 将指数 转换为二进制形式
  1. 初始化结果变量 result = 1
  1. 从二进制表示的最高位开始,依次处理每一位
      • 如果当前位为 1,将 result *= a mod n
      • 如果当前位为 0,则不需要进行额外操作
  1. 当处理完所有位后,result 即为所求的模幂运算结果

优化重复平方法

Repeated squaring减少乘法操作次数
  1. 初始化结果变量 result = 1,将底数 存储到临时变量 中。
  1. 从二进制表示的最高位开始,依次处理每一位:
      • 如果当前位为 1,将 result 乘以
      • 自乘,即

公钥加密

也称 “非对称性加密” (Asymmetric Encryption)
Alice 可以利用公钥(加密规则)发出一条加密的消息给 Bob。
Bob 将是唯一能够利用私钥(解密规则)对密文进行解密的人。
例如前后端使用一对密钥。前端使用公钥加密数据,后端使用私钥解密数据。
对称加密Symmetric Encryption指的是前后端使用相同的密钥来进行加密和解密。这意味着密钥必须在前后端之间安全地共享。如果有第三方能够获取到密钥,那么加密就失去了意义。

RSA 密码

来自于三位数学家 Rivest、Shamir 和 Adleman基于大整数的质因数分解问题的困难性
  • relies on the dramatic difference between the ease of finding large prime numbers and the difficulty of factoring the product of two large prime numbers

密钥生成

  • 选择两个不同的大质数
    • 计算 为模数
    • 计算 为欧拉函数值
  • 选择一个整数 ,且 互质
  • 计算 ,满足
    • 💀 存在等式转化关系的,如果是小质数,可以暴力枚举,通过公钥破解出私钥
🔐 公钥 ,私钥

加密算法

  • 根据编码方案,把消息 转化为相应整数
  • 根据公钥 计算 ,获得密文 (ciphertext)
  • 把密文发给接收者

解密算法

  • 根据私钥 计算明文
  • 计算明文 (message)
Choose
Let , one solution is (3∗7 𝑚𝑜𝑑 20=1)
Public key , Private key
➢ The encryption of is ➢ The decryption of is

ElGamal 密码

基于求解离散对数问题的困难性,是 RSA 以后比较有希望的一个公钥密码。

密钥生成

  • 选择一个大素数 ,并计算其原根 (primitive root)
    • 是公开参数,但不把它称为公钥
  • 选择一个随机数 ,满足 ,且 互质
  • 计算
🔐 公钥 ,私钥

加密算法

  • 根据编码方案,把消息 转化为相应整数
  • 选择随机数 , 满足 ,且 互质
  • 计算
  • 根据公钥计算计算
  • 将密文 发送

解密算法

  • 根据 倒推
  • 根据 倒推

哈希加密

MD-5

 
2023 - 2026