?? elgamaldecryptor.java
字號:
package abchr.crypto;
import java.math.BigInteger;
public class ElGamalDecryptor implements Decryptor {
private ElGamalPrivateKey key;
public ElGamalDecryptor(ElGamalPrivateKey key) {
this.key=key;
}
public byte[] decrypt(byte[] data) {
int yLength=Util.byteArrayToInt(data,0);
int encLength=Util.byteArrayToInt(data,4);
byte[] yBytes=new byte[yLength];
System.arraycopy(data,8,yBytes,0,yLength);
byte[] encryptedTextBytes=new byte[encLength];
System.arraycopy(data,8+yLength,encryptedTextBytes,0,encLength);
BigInteger y=new BigInteger(yBytes);
BigInteger encryptedText=new BigInteger(encryptedTextBytes);
BigInteger exponent=key.getModulus().subtract(key.getPrivateKey()).subtract(BigInteger.ONE);
BigInteger plainText=y.modPow(exponent,key.getModulus());
plainText=plainText.multiply(encryptedText).remainder(key.getModulus());
byte[] modBytes=plainText.toByteArray();
byte[] bytes=new byte[modBytes.length-1];
System.arraycopy(modBytes,1,bytes,0,bytes.length);
return bytes;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -