/// <summary>
        /// 计算私钥
        /// </summary>
        /// <param name="e">公钥(加密指数)</param>
        /// <param name="l">n的欧拉数(p-1)*(q-1)</param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public static BigInteger GetPrivate(BigInteger e, BigInteger l)
        {
            if (e > l)
            {
                throw new ArgumentException("e不能大于l");
            }

var gcd = BigInteger.GreatestCommonDivisor(e, l);
            if (gcd != 1)
            {
                throw new ArgumentException("e与l必须互质");
            }

return GetInverse(e, l);
        }
        /// <summary>
        /// 求逆元
        /// </summary>
        /// <param name="e">指数</param>
        /// <param name="m">模</param>
        /// <returns><paramref name="e"/> 在 <paramref name="m"/> 下的逆元,不存在逆元返回-1 </returns>
        private static BigInteger GetInverse(BigInteger e, BigInteger m)
        {

BigInteger x, y;
            BigInteger d = Euclidean(e, m, ref x, ref y);
            return d == 1 ? (x + m) % m : -1;
        }
        /// <summary>
        /// 扩展欧几里得算法
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        private static BigInteger Euclidean(BigInteger a, BigInteger b, ref BigInteger x, ref BigInteger y)
        {
            if (b == 0)
            {
                x = 1;
                y = 0;
                return a;
            }
            BigInteger ret = Euclidean(b, a % b, ref y, ref x);
            y -= a / b * x;
            return ret;
        }

//参考资料:(11条消息) 逆元的求法总结(3种基本方法+4种实现)_星辰大少主的博客-CSDN博客_求逆元

扩展欧几里德算法 C# 实现相关推荐

  1. poj 2115 C Looooops(扩展欧几里德算法)

    题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...

  2. 欧几里德与扩展欧几里德算法——密码学笔记(五)

    一.欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a% ...

  3. 欧几里德算法与扩展欧几里德算法

    欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd( ...

  4. (扩展欧几里德算法)zzuoj 10402: C.机器人

    10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...

  5. Bailian2793 孙子问题【扩展欧几里德算法+中国剩余定理】

    2793:孙子问题 总时间限制: 15000ms 内存限制: 65536kB 描述 我国古代<孙子算经>中,记有如下算题:"今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩 ...

  6. 欧几里德算法 扩展欧几里德算法 求解丢番图方程

    欧几里德算法 即辗转相除法,计算整数A, B最大公约数. 基本算法:设 a = kb + r,其中a,b,k,r都是整数,则 gcd(a,b) = gcd(b,r),即 gcd(a,b) = gcd( ...

  7. 扩展欧几里德算法解决问题A:Jugs

    Jugs codeup的Jugs题目需要使用扩展欧几里德算法解决: Zoj的jugs题目需要使用BFS算法解决: codeup的Jugs题目需要使用扩展欧几里德算法解决: 题目链接:http://co ...

  8. 青蛙的约会(POJ 1061 扩展欧几里德算法)

    POJ 1061 青蛙的约会 扩展欧几里德算法简单介绍及应用 题目大意: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳, ...

  9. 裴蜀定理与扩展欧几里德算法

    裴蜀定理又称贝祖定理:对于给定的正整数a,b,方程ax+by=c有解的充要条件为c是gcd(a,b)的整数倍. 裴蜀定理的推广:方程ax+by+cz+-+nm=f(其中a,b,c-n,f为整数)有解的 ...

  10. 集训笔记---扩展欧几里德算法(POJ NO.1061 青蛙的约会 有点烦人小跳蛙gcd)

    又在搬砖,本来以为这是一个追及问题,后来发现数据好像并不是那么个意思,后来把方程列出来,经过一个去模的操作,我们其实可以找到一点线索,那就是,一个经过变形的二元一次方程,那么在这种情况下,就可以利用扩 ...

最新文章

  1. Sencha Touch 2 DataView / List 分页
  2. opengl光照效果_【图形学基础 | Shader】Blinn-Phong 光照模型
  3. python定时发送邮件_Python3实现带附件的定时发送邮件功能
  4. SAP ERP物料和SAP Cloud for Customer的同步
  5. XmlPullParser
  6. Flutter 初尝:从 Java 无缝过渡,java开发面试笔试题
  7. 微软Power BI报表服务器学习总览
  8. sprintf函数打印数据不对_printf的归宿-数据打印到哪儿了
  9. android ListView和GridView拖拽移位具体实现及拓展
  10. FFmpeg解码音频代码
  11. 正确认识计算机专业,如何正确认识计算机科学与技术专业
  12. 方程检验格式图片_eviews的异方差检验ppt课件
  13. 肠道微生物会导致你变胖吗?
  14. Maya模型锁定不能编辑的解锁方法
  15. 数独问题每行每列每3X3
  16. airvideo_如何免费获取Android中的AirVideo功能
  17. guava-Primitives
  18. 函数声明放在头文件中,函数的定义放在实现文件中,然后在主函数中调用
  19. 关于单向TSP旅行商问题/修路问题/最小生成树问题的求解讨论
  20. Authentication和Authrization(下)

热门文章

  1. 女神节福利:友萌君送你~健身踏青装备
  2. wps2019怎么调整字间距_wps2019表格和文字间距太大怎么调整?
  3. 【操作系统真象还原】Mac安装配置bochs
  4. Web程序设计(一)
  5. 华为云CDN+芒果TV,是如何做出“云”榜样?
  6. Android手势密码解锁设计
  7. Android ExoPlayer播放音视频的使用指南
  8. 烤仔万花筒| Reach on Conflux 2021黑客松Demo Day
  9. ArduPilot日志系统探索(一)
  10. 网线制作ppt_制作网线图解讲解.ppt