ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例
JRE8 + jce_policy-8, Bouncy Castle 1.50環境下調試通過
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Security;
import javax.crypto.Cipher;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import org.bouncycastle.jce.interfaces.ECPrivateKey;
import org.bouncycastle.jce.interfaces.ECPublicKey;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.math.ec.ECCurve;
import org.bouncycastle.math.ec.ECPoint;
public class TestECC {
public static void main(String[] args) throws
Exception {
byte[] plainText = "Hello
World!".getBytes();
byte[] cipherText = null;
Security.addProvider(new
BouncyCastleProvider());
//生成公鑰和私鑰
KeyPairGenerator
keyPairGenerator = KeyPairGenerator.getInstance("ECIES",
"BC");
KeyPair keyPair =
keyPairGenerator.generateKeyPair();?ECPublicKey ecPublicKey =
(ECPublicKey) keyPair.getPublic();
ECPrivateKey ecPrivateKey =
(ECPrivateKey) keyPair.getPrivate();
//打印密鑰信息
ECCurve ecCurve =
ecPublicKey.getParameters().getCurve();
System.out.println("橢圓曲線參數a = "
+ ecCurve.getA().toBigInteger());
System.out.println("橢圓曲線參數b = "
+ ecCurve.getB().toBigInteger());
System.out.println("橢圓曲線參數q = "
+ ((ECCurve.Fp) ecCurve).getQ());
ECPoint basePoint =
ecPublicKey.getParameters().getG();
System.out.println("基點橫坐標?"
+
basePoint.getAffineXCoord().toBigInteger());
System.out.println("基點縱坐標?"
+
basePoint.getAffineYCoord().toBigInteger());
System.out.println("公鑰橫坐標?"
+
ecPublicKey.getQ().getAffineXCoord().toBigInteger());
System.out.println("公鑰縱坐標?"
+
ecPublicKey.getQ().getAffineYCoord().toBigInteger());
System.out.println("私鑰?" + ecPrivateKey.getD());
Cipher cipher =
Cipher.getInstance("ECIESwithDESede/NONE/PKCS7Padding",
"BC");
// 加密
cipher.init(Cipher.ENCRYPT_MODE,
ecPublicKey);
cipherText =
cipher.doFinal(plainText);
System.out.println("密文: " + new
HexBinaryAdapter().marshal(cipherText));
// 解密
cipher.init(Cipher.DECRYPT_MODE,
ecPrivateKey);
plainText =
cipher.doFinal(cipherText);
// 打印解密后的明文
System.out.println("解密后的明文: " +
new String(plainText));
}
}
總結
以上是生活随笔為你收集整理的ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果发布 iOS / iPadOS 17
- 下一篇: 路由器转发分组的依据是什么路由器如何转发