ECC加密解密 java
时间: 2023-11-20 15:55:21 浏览: 29
以下是ECC加密解密的Java代码示例:
```java
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.spec.ECGenParameterSpec;
import javax.crypto.Cipher;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class ECCDemo {
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "BC");
ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("secp256k1");
keyPairGenerator.initialize(ecGenParameterSpec);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 明文
String plainText = "Hello, ECC!";
// 加密
Cipher cipher = Cipher.getInstance("ECIES", "BC");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherText = cipher.doFinal(plainText.getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedText = cipher.doFinal(cipherText);
// 输出结果
System.out.println("明文:" + plainText);
System.out.println("密文:" + new String(cipherText));
System.out.println("解密后的明文:" + new String(decryptedText));
}
}
```
该示例使用Bouncy Castle作为加密算法提供程序,生成密钥对,然后使用ECIES算法进行加密和解密。在加密时,使用公钥对明文进行加密,然后使用私钥对密文进行解密,最后输出解密后的明文。