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

📄 eccryptosystem.java

📁 java写的椭圆曲线加密(ECC)算法源码
💻 JAVA
字号:
package ecc.elliptic;import ecc.*;import java.math.BigInteger;import java.io.*;import java.util.*;import java.security.MessageDigest;public class ECCryptoSystem implements CryptoSystem {    MessageDigest hash;    private EllipticCurve ec;        public ECCryptoSystem(EllipticCurve ec) {	this.ec = ec;	try {	    hash = MessageDigest.getInstance("SHA-1");	} catch (java.security.NoSuchAlgorithmException e) {	    System.out.println("RSACryptoSystem: THIS CANNOT HAPPEN\n"+e);	    System.exit(0);	}    }    public int blockSize() {	return 20;    }    public byte[] encrypt(byte[] input,int numbytes, Key key) {	ECKey ek = (ECKey) key;	byte[] res=new byte[ek.mother.getPCS()+numbytes];	hash.reset();	BigInteger rk = new BigInteger(ek.mother.getp().bitLength() + 17, Rand.om);	if (ek.mother.getOrder() != null) {	    rk = rk.mod(ek.mother.getOrder());	}	ECPoint gamma = ek.mother.getGenerator().multiply(rk);	ECPoint sec = ek.beta.multiply(rk);	System.arraycopy(gamma.compress(),0,res,0,ek.mother.getPCS());	hash.update(sec.getx().toByteArray());	hash.update(sec.gety().toByteArray());	byte[] digest = hash.digest();	for(int j = 0; j < numbytes; j++) {	    res[j+ek.mother.getPCS()]=(byte) (input[j]^digest[j]);	}	return res;    }    public byte[] decrypt(byte[] input, Key key) {	ECKey dk = (ECKey) key;	byte[] res=new byte[input.length-dk.mother.getPCS()];	byte[] gammacom=new byte[dk.mother.getPCS()];	hash.reset();		System.arraycopy(input,0,gammacom,0,dk.mother.getPCS());	ECPoint gamma = new ECPoint(gammacom,dk.mother);	ECPoint sec = gamma.multiply(dk.sk);	if(sec.isZero()) {	    hash.update(BigInteger.ZERO.toByteArray());	    hash.update(BigInteger.ZERO.toByteArray());	} else {	    hash.update(sec.getx().toByteArray());	    hash.update(sec.gety().toByteArray());	}	byte[] digest = hash.digest();	for(int j = 0; j < input.length-dk.mother.getPCS(); j++) {	    res[j]=(byte) (input[j+dk.mother.getPCS()]^digest[j]);	}	return res;    }        /** This method generates a new key for the cryptosystem.     *@return the new key generated*/    public Key generateKey() {	return new ECKey(ec);    }    public String toString(){	return "ECC - " + ec.toString();    }}

⌨️ 快捷键说明

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