Class EccCipher

java.lang.Object
cloud.opencode.base.crypto.asymmetric.EccCipher
All Implemented Interfaces:
AsymmetricCipher

public final class EccCipher extends Object implements AsymmetricCipher
ECC cipher implementation using ECIES (Elliptic Curve Integrated Encryption Scheme) ECC 密码实现(椭圆曲线集成加密方案)

This implementation uses ECDH for key agreement combined with AES-256-GCM for encryption. The scheme is: ECDH(ephemeral, recipient_public) -> KDF -> AES-GCM(derived_key, plaintext) 此实现使用 ECDH 密钥协商结合 AES-256-GCM 加密。 方案为:ECDH(临时密钥, 接收方公钥) -> KDF -> AES-GCM(派生密钥, 明文)

Features | 主要功能:

  • ECIES encryption using elliptic curves - 使用椭圆曲线的 ECIES 加密
  • P-256, P-384, P-521 curve support - P-256、P-384、P-521 曲线支持

Usage Examples | 使用示例:

EccCipher ecc = EccCipher.p256();
ecc.setPublicKey(publicKey);
byte[] encrypted = ecc.encrypt(data);

Security | 安全性:

  • Thread-safe: No - 线程安全: 否
  • Null-safe: Yes - 空值安全: 是

Performance | 性能特性:

  • Time complexity: O(k^3) for key gen, O(n) for encrypt - 时间复杂度: O(k^3) 密钥生成,O(n) 加密
  • Space complexity: O(k) - 空间复杂度: O(k)
Since:
JDK 25, opencode-base-crypto V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • p256

      public static EccCipher p256()
      Create ECC cipher with P-256 curve (recommended) 创建使用 P-256 曲线的 ECC 密码(推荐)
      Returns:
      new ECC cipher with P-256
    • p384

      public static EccCipher p384()
      Create ECC cipher with P-384 curve 创建使用 P-384 曲线的 ECC 密码
      Returns:
      new ECC cipher with P-384
    • p521

      public static EccCipher p521()
      Create ECC cipher with P-521 curve 创建使用 P-521 曲线的 ECC 密码
      Returns:
      new ECC cipher with P-521
    • withCurve

      public static EccCipher withCurve(CurveType curve)
      Create ECC cipher with specified curve 创建使用指定曲线的 ECC 密码
      Parameters:
      curve - the elliptic curve type
      Returns:
      new ECC cipher
    • withGeneratedKeyPair

      public static EccCipher withGeneratedKeyPair(CurveType curve)
      Create ECC cipher with generated key pair 创建带生成密钥对的 ECC 密码
      Parameters:
      curve - the elliptic curve type
      Returns:
      ECC cipher with generated keys
    • setPublicKey

      public AsymmetricCipher setPublicKey(PublicKey publicKey)
      Description copied from interface: AsymmetricCipher
      Set public key for encryption operations 设置用于加密操作的公钥
      Specified by:
      setPublicKey in interface AsymmetricCipher
      Parameters:
      publicKey - the public key
      Returns:
      this cipher instance for method chaining
    • setPublicKey

      public AsymmetricCipher setPublicKey(byte[] encodedKey)
      Description copied from interface: AsymmetricCipher
      Set public key from encoded byte array 从编码的字节数组设置公钥
      Specified by:
      setPublicKey in interface AsymmetricCipher
      Parameters:
      encodedKey - the encoded public key bytes
      Returns:
      this cipher instance for method chaining
    • setPublicKeyPem

      public AsymmetricCipher setPublicKeyPem(String pem)
      Description copied from interface: AsymmetricCipher
      Set public key from PEM formatted string 从 PEM 格式字符串设置公钥
      Specified by:
      setPublicKeyPem in interface AsymmetricCipher
      Parameters:
      pem - the PEM formatted public key
      Returns:
      this cipher instance for method chaining
    • setPrivateKey

      public AsymmetricCipher setPrivateKey(PrivateKey privateKey)
      Description copied from interface: AsymmetricCipher
      Set private key for decryption operations 设置用于解密操作的私钥
      Specified by:
      setPrivateKey in interface AsymmetricCipher
      Parameters:
      privateKey - the private key
      Returns:
      this cipher instance for method chaining
    • setPrivateKey

      public AsymmetricCipher setPrivateKey(byte[] encodedKey)
      Description copied from interface: AsymmetricCipher
      Set private key from encoded byte array 从编码的字节数组设置私钥
      Specified by:
      setPrivateKey in interface AsymmetricCipher
      Parameters:
      encodedKey - the encoded private key bytes
      Returns:
      this cipher instance for method chaining
    • setPrivateKeyPem

      public AsymmetricCipher setPrivateKeyPem(String pem)
      Description copied from interface: AsymmetricCipher
      Set private key from PEM formatted string 从 PEM 格式字符串设置私钥
      Specified by:
      setPrivateKeyPem in interface AsymmetricCipher
      Parameters:
      pem - the PEM formatted private key
      Returns:
      this cipher instance for method chaining
    • setKeyPair

      public AsymmetricCipher setKeyPair(KeyPair keyPair)
      Description copied from interface: AsymmetricCipher
      Set both public and private keys from key pair 从密钥对设置公钥和私钥
      Specified by:
      setKeyPair in interface AsymmetricCipher
      Parameters:
      keyPair - the key pair containing public and private keys
      Returns:
      this cipher instance for method chaining
    • encrypt

      public byte[] encrypt(byte[] plaintext)
      Description copied from interface: AsymmetricCipher
      Encrypt data using public key 使用公钥加密数据
      Specified by:
      encrypt in interface AsymmetricCipher
      Parameters:
      plaintext - the data to encrypt
      Returns:
      encrypted bytes
    • encrypt

      public byte[] encrypt(String plaintext)
      Description copied from interface: AsymmetricCipher
      Encrypt string using public key 使用公钥加密字符串
      Specified by:
      encrypt in interface AsymmetricCipher
      Parameters:
      plaintext - the string to encrypt
      Returns:
      encrypted bytes
    • encryptBase64

      public String encryptBase64(byte[] plaintext)
      Description copied from interface: AsymmetricCipher
      Encrypt data and return Base64 encoded result 加密数据并返回 Base64 编码结果
      Specified by:
      encryptBase64 in interface AsymmetricCipher
      Parameters:
      plaintext - the data to encrypt
      Returns:
      Base64 encoded ciphertext
    • encryptHex

      public String encryptHex(byte[] plaintext)
      Description copied from interface: AsymmetricCipher
      Encrypt data and return hexadecimal encoded result 加密数据并返回十六进制编码结果
      Specified by:
      encryptHex in interface AsymmetricCipher
      Parameters:
      plaintext - the data to encrypt
      Returns:
      hexadecimal encoded ciphertext
    • decrypt

      public byte[] decrypt(byte[] ciphertext)
      Description copied from interface: AsymmetricCipher
      Decrypt data using private key 使用私钥解密数据
      Specified by:
      decrypt in interface AsymmetricCipher
      Parameters:
      ciphertext - the encrypted data
      Returns:
      decrypted bytes
    • decryptToString

      public String decryptToString(byte[] ciphertext)
      Description copied from interface: AsymmetricCipher
      Decrypt data and return as string 解密数据并返回字符串
      Specified by:
      decryptToString in interface AsymmetricCipher
      Parameters:
      ciphertext - the encrypted data
      Returns:
      decrypted string
    • decryptBase64

      public byte[] decryptBase64(String base64Ciphertext)
      Description copied from interface: AsymmetricCipher
      Decrypt Base64 encoded ciphertext 解密 Base64 编码的密文
      Specified by:
      decryptBase64 in interface AsymmetricCipher
      Parameters:
      base64Ciphertext - the Base64 encoded ciphertext
      Returns:
      decrypted bytes
    • decryptHex

      public byte[] decryptHex(String hexCiphertext)
      Description copied from interface: AsymmetricCipher
      Decrypt hexadecimal encoded ciphertext 解密十六进制编码的密文
      Specified by:
      decryptHex in interface AsymmetricCipher
      Parameters:
      hexCiphertext - the hexadecimal encoded ciphertext
      Returns:
      decrypted bytes
    • getAlgorithm

      public String getAlgorithm()
      Description copied from interface: AsymmetricCipher
      Get the algorithm name 获取算法名称
      Specified by:
      getAlgorithm in interface AsymmetricCipher
      Returns:
      the algorithm name
    • getMaxEncryptSize

      public int getMaxEncryptSize()
      Description copied from interface: AsymmetricCipher
      Get maximum size of data that can be encrypted in a single operation 获取单次操作可加密的最大数据大小
      Specified by:
      getMaxEncryptSize in interface AsymmetricCipher
      Returns:
      maximum encrypt size in bytes, or -1 if not applicable
    • generateKeyPair

      public KeyPair generateKeyPair()
      Description copied from interface: AsymmetricCipher
      Generate a new key pair for this cipher 为此加密器生成新的密钥对
      Specified by:
      generateKeyPair in interface AsymmetricCipher
      Returns:
      generated key pair
    • getPublicKey

      public PublicKey getPublicKey()
      Get the public key 获取公钥
      Returns:
      the public key, or null if not set
    • getPrivateKey

      public PrivateKey getPrivateKey()
      Get the private key 获取私钥
      Returns:
      the private key, or null if not set
    • getCurveType

      public CurveType getCurveType()
      Get the curve type 获取曲线类型
      Returns:
      the curve type