逆元
分数求模(取余)过程 乘法逆元
分数的模运算在ECC加密算法中需要用到对分数的模运算,但大多的资料只给结果没有给计算过程,就连初等数论书上面也不到计算方法,搜索了一下,终于在网上到了相关资料,用的思路其实还是整数模运算的,直接copy下来下面是“分数”模运算的定义:b, m互质(互为素数)k = a/b (mod m) <=> kb = a (mod m)这里求 x = 1/17 (mod 2668)<=&...
详解HASH(字符串哈希)
详解HASH(字符串哈希)HASH意为(散列),是OI的常⽤算法。我们常⽤哈希的原因是,hash可以快速(⼀般来说是O(段长))的求出⼀个⼦段的hash值,然后就可以快速的判断两个串是否相同。今天先讲string类的hash。可以发现,与⼀个string有关的HASH值不仅仅跟每个字符的个数有关,还和字符的位⼦有关。通过简单的思考,我们可以构造如图的模型:写⼀个⽐较正常的hash模板吧const...
拓展的欧几里得算法求乘法逆元
拓展的欧几里得算法求乘法逆元 拓展的欧几里得算法又叫扩展欧几里得算法,是一种求解一元线性同余方程的方法,可以用来求解乘法逆元。假设要求a在模n下的乘法逆元,即到x满足ax ≡ 1 (mod n)。 算法步骤如下: 1. 用欧几里得算法求出a和n的最大公约数gcd(a,n)以及对应的系数s和t。 ...
用扩展欧几里得算法求乘法逆元例题
用扩展欧几里得算法求乘法逆元例题引言在数学和计算机科学中,乘法逆元是一个重要的概念。它可以在求解模运算的过程中起到关键作用。尤其是在密码学和编码理论中,乘法逆元被广泛应用。本文将介绍一种常用的算法,即扩展欧几里得算法,用于求解乘法逆元的例题。扩展欧几里得算法概述扩展欧几里得算法是求解两个整数的最大公约数的一种方法。同时,它还可以将最大公约数表示为两个整数的线性组合。这个性质使得扩展欧几里得算法能够...
【笔记】用Javascript实现椭圆曲线加密算法
【笔记】⽤Javascript实现椭圆曲线加密算法之前为了⼀个项⽬所以去学了下椭圆曲线加密算法,本来是想写篇笔记细写算法的,但写了半天也没写出来什么,所以不如把⾃⼰摸索的东西⽤代码写出来了。之前项⽬⽤的nodejs,所以这⾥就⽤js写了。所有代码⼏乎全部可以直接在F12的控制台中运⾏。0x01 点的定义ecc中最基础计算单位⾃然就是⼀个个点了,点的定义⾮常简单,只要new⼀个对象然后赋予其点的xy...
攻防世界——Crypto新手练习区7题(easy_RSA)题解
攻防世界——Crypto新⼿练习区7题(easy_RSA)题解题⽬分析这道题⽬考察了对RSA⾮对称加密算法的理解,算法的原理及流程可以看这篇博客。解题过程⽬前p, q, e都是已知的,根据算法原理我们可以知道要求的d与e满⾜,⽽也可以计算出来。所以我们可以通过求e模的乘法逆元得到d的值。这⾥我⽤到了⼀个python的库gmpy2来求解d,gmpy2的安装⽐较简单,直接在Anaconda Navig...