ΪʲôECIES˽Կ¼ÓÃÜ ¹«Ô¿´¦Àí¾Í³ö´í,µ«Êǹ«Ô¿¼ÓÃÜ,˽Կ´¦Àí¾ÍÕý³£
//¹«Ô¿¼ÓÃÜ Ë½Ô¿´¦Àí//³õʼ»¯ÃØÔ¿try { KeyPairGenerator kp=KeyPairGenerator.getInstance("EC","BC"); kp.initialize(256,new SecureRandom()); KeyPair keyPair=kp.generateKeyPair(); ECPublicKey ecPubKey=(ECPublicKey)keyPair.getPublic(); ECPrivateKey ecPriKey=(ECPrivateKey)keyPair.getPrivate(); System.out.println("¹«Ô¿:"+ Base64.encodeBase64String(ecPubKey.getEncoded())); System.out.println("˽Կ:"+ Base64.encodeBase64String(ecPriKey.getEncoded())); //˽Կ¼ÓÃÜ,¹«Ô¿´¦Àí:¼ÓÃÜ PKCS8EncodedKeySpec peks=new PKCS8EncodedKeySpec(ecPriKey.getEncoded()); KeyFactory keyFactory=KeyFactory.getInstance("EC"); PrivateKey priKey=keyFactory.generatePrivate(peks); Cipher cipher=Cipher.getInstance("ECIES","BC"); cipher.init(Cipher.ENCRYPT_MODE,priKey); byte[] result=cipher.doFinal("hello".getBytes()); System.out.println("˽Կ¼ÓÃÜ,¹«Ô¿´¦Àí:¼ÓÃÜ-----"+Base64.encodeBase64String(result)); //˽Կ¼ÓÃÜ,¹«Ô¿´¦Àí:´¦Àí X509EncodedKeySpec x509=new X509EncodedKeySpec(ecPubKey.getEncoded()); keyFactory=KeyFactory.getInstance("EC"); PublicKey pubKey=keyFactory.generatePublic(x509); cipher=Cipher.getInstance("ECIES","BC"); cipher.init(Cipher.DECRYPT_MODE,pubKey); result=cipher.doFinal(result); System.out.println("˽Կ¼ÓÃÜ,¹«Ô¿´¦Àí:´¦Àí"+new String(result));}catch (NoSuchAlgorithmException e) { e.printStackTrace();} catch (NoSuchProviderException e) { e.printStackTrace();} catch (InvalidKeySpecException e) { e.printStackTrace();} catch (NoSuchPaddingException e) { e.printStackTrace();} catch (InvalidKeyException e) { e.printStackTrace();} catch (BadPaddingException e) { e.printStackTrace();} catch (IllegalBlockSizeException e) { e.printStackTrace();}Òì³£ÐÅÏ¢ java.security.InvalidKeyException: must be passed recipient's public EC key for encryption at org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher.engineInit(Unknown Source) at org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher.engineInit(Unknown Source) at java.base/javax.crypto.Cipher.init(Cipher.java:1283) at java.base/javax.crypto.Cipher.init(Cipher.java:1223) |
ÃâÔðÉùÃ÷£º±¾ÄÚÈݽö´ú±í»Ø´ð»áÔ±¼û½â²»´ú±íÌìÃ˹۵㣬Çë½÷É÷¶Ô´ý¡£
°æȨÉùÃ÷£º×÷Õß±£ÁôȨÀû£¬²»´ú±íÌìÃËÁ¢³¡¡£
|
|
|
|