码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Paillier算法简介


    Paillier算法

    • Paillier算法简介
    • 密钥生成
    • 明文加密
    • 密文解密
    • 正确性分析
    • 加法同态的性质
    • 相关代码

    Paillier算法简介

      Paillier加密算法是Pascal paillier在1999年发明的概率公钥加密算法,该算法基于复合剩余类的困难问题,是一种满足加法的同态加密算法,已经广泛应用在加密信号处理或第三方数据处理领域。

    在这里插入图片描述


    原论文出处参见:https://link.springer.com/content/pdf/10.1007%2F3-540-48910-X_16.pdf

    密钥生成

     秘钥生成主要由如下步骤: k p u b = ( n , g ) , k p r = ( λ , μ ) k_{pub} = (n, g), k_{pr} = (\lambda, \mu) kpub​=(n,g),kpr​=(λ,μ)

    1. 随机选择两个大素数 p p p和 q q q满足 g c d ( p q , ( p − 1 ) ( q − 1 ) ) = 1 gcd(pq, (p-1)(q-1)) = 1 gcd(pq,(p−1)(q−1))=1,且满足p 和 和 和q$的长度相等。
    2. 计算 n = p ∗ q n = p*q n=p∗q, λ = l c m ( p − 1 , q − 1 ) \lambda = lcm(p-1, q-1) λ=lcm(p−1,q−1), l c m lcm lcm为两个数的最小公倍数。
    3. 随机选取 g g g, g ∈ Z n 2 ∗ g \in Z^*_ {n^2} g∈Zn2∗​, 并且满足 g c d ( L ( g λ m o d n 2 ) , n ) = 1 gcd(L(g^{\lambda} modn^2), n) = 1 gcd(L(gλmodn2),n)=1。 其中 L ( x ) = x − 1 n L(x) = \frac{x-1}{n} L(x)=nx−1​, μ = ( L ( g λ m o d n 2 ) ) − 1 m o d n \mu = (L(g^{\lambda} modn^2))^{-1} mod n μ=(L(gλmodn2))−1modn
    4. 公钥为 k p u b = ( n , g ) k_{pub} = (n, g) kpub​=(n,g)
    5. 私钥为 k p r = ( λ , μ ) k_{pr} = (\lambda, \mu) kpr​=(λ,μ)

    明文加密

    1. 输入明文信息m, 满足 m ∈ Z n m \in Z_n m∈Zn​
    2. 选择随机数 0 ≤ r < n 0 \leq r < n 0≤r<n且 r ∈ Z n ∗ r \in Z^*_n r∈Zn∗​
    3. 计算密文: c = g m r n ( m o d n 2 ) c = g^mr^n(modn^2) c=gmrn(modn2)

    密文解密

    1. 输入密文c, 满足 c ∈ Z n 2 ∗ c \in Z^*_ {n^2} c∈Zn2∗​
    2. 计算明文消息: m = L ( c λ m o d n 2 ) ∗ μ m o d n = L ( c λ m o d n 2 ) L ( g λ m o d n 2 ) m o d n m = L(c^{\lambda}modn^2) * \mu mod n = \frac{L(c^{\lambda} modn^2)}{L(g^{\lambda} modn^2)}modn m=L(cλmodn2)∗μmodn=L(gλmodn2)L(cλmodn2)​modn

    正确性分析

    参见文章:https://zhuanlan.zhihu.com/p/259282416

    加法同态的性质

    相关代码

  • 相关阅读:
    正则表达式练习
    c++中和c语言不相同的地方
    Spring复习之——IoC和AOP
    redis操作五种数据类型
    WebDAV之葫芦儿·派盘+读出通知
    汽车行业调研:特种车市场发展趋势及现状分析
    K8S资源对象:StatefulSet简介
    9.30作业
    消息队列 RabbitMQ 遇上可观测--业务链路可视化
    VSCode & Intellij IDEA CE 数据库连接
  • 原文地址:https://blog.csdn.net/qq_43751200/article/details/126274300
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号