⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quickmod.java

📁 椭圆曲线的取模运算
💻 JAVA
字号:

import java.math.*;
public class QuickMod//快速取模类
{

	
	/*
	 *相等两点相加的"入"
	 */
	public BigInteger getNamna1(BigInteger x1,BigInteger y1,BigInteger a,BigInteger p)
	//public BigInteger getNamna1(BigInteger p)
	{
		BigInteger fz=BigInteger.valueOf(3).multiply(x1.multiply(x1)).add(a);
    	BigInteger fm=BigInteger.valueOf(2).multiply(y1);
    	//BigInteger fz=BigInteger.valueOf(123);//测试数据
    	//BigInteger fm=BigInteger.valueOf(796);//测试数据
    	BigInteger m1=fz.mod(p);
    	BigInteger m2=fm.modInverse(p);
    	BigInteger m3=m1.multiply(m2).mod(p);
    	return m3;
	}
	
	/*
	 *不同两点相加的"入"
	 */
	public BigInteger getNamna2(BigInteger x1,BigInteger y1,BigInteger x2,BigInteger y2,BigInteger p)
	{
		BigInteger fz=y2.subtract(y1);//x1,y1是P的点,x2,y2是Q的点
    	BigInteger fm=x2.subtract(x1);
    	BigInteger m1=fz.mod(p);
    	BigInteger m2=fm.modInverse(p);
    	BigInteger m3=m1.multiply(m2).mod(p);
	    return m3;
	}
	
	/*
	 *大整数下快速取模方法
	 */
	public BigInteger getMod(BigInteger fz,BigInteger fm,BigInteger modulus)
	{
		BigInteger m1=fz.mod(modulus);
    	BigInteger m2=fm.modInverse(modulus);
    	BigInteger m3=m1.multiply(m2).mod(modulus);
    	return m3;
	}
	
	/*
	 *测试 QuickMod
	 */
	 
	public static void main(String args[])
	{
        QuickMod mod=new QuickMod();
        System.out.println(mod.getNamna1(BigInteger.valueOf(113),
        BigInteger.valueOf(107),BigInteger.valueOf(117),BigInteger.valueOf(301)));//测试数据
	    BigInteger b=mod.getNamna2(BigInteger.valueOf(7),BigInteger.valueOf(19),BigInteger.valueOf(13),BigInteger.valueOf(12),BigInteger.valueOf(23));
	    System.out.println(b);
	    System.out.println(mod.getMod(BigInteger.valueOf(11),BigInteger.valueOf(13),BigInteger.valueOf(23)));
	    
	    System.out.println(mod.getMod(BigInteger.valueOf(123),BigInteger.valueOf(796),BigInteger.valueOf(1013)));
	    System.out.println(mod.getMod(BigInteger.valueOf(456),BigInteger.valueOf(796),BigInteger.valueOf(1013)));
	    System.out.println(mod.getMod(BigInteger.valueOf(789),BigInteger.valueOf(796),BigInteger.valueOf(1013)));
	    System.out.println(mod.getMod(BigInteger.valueOf(101),BigInteger.valueOf(796),BigInteger.valueOf(1013)));
	    System.out.println(mod.getMod(BigInteger.valueOf(12),BigInteger.valueOf(796),BigInteger.valueOf(1013)));
	    System.out.println(mod.getMod(BigInteger.valueOf(123),BigInteger.valueOf(796),BigInteger.valueOf(1013)));
	    
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -