欢迎来到天天文库
浏览记录
ID:26712161
大小:113.00 KB
页数:8页
时间:2018-11-28
《java加密技术七》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java加密技术(七)文章分类:Java编程ECCECC-EllipticCurvesCryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。在软件注册保护方面起到很大的作用,一般的序列号通常由该算法产生。 当我开始整理《Java加密技术(二)》的时候,我就已经在开始研究ECC了,但是关于Java实现ECC算法的资料实在是太少了,无论是国内还是国外的资料,无论是官方还是非官方的解释,最终只有一种答案——ECC算法在jdk1.5后加入支持,目前仅仅只能
2、完成密钥的生成与解析。如果想要获得ECC算法实现,需要调用硬件完成加密/解密(ECC算法相当耗费资源,如果单纯使用CPU进行加密/解密,效率低下),涉及到JavaCard领域,PKCS#11。其实,PKCS#11配置很简单,但缺乏硬件设备,无法尝试! 尽管如此,我照旧提供相应的Java实现代码,以供大家参考。通过java代码实现如下:Coder类见Java加密技术(一)Java代码1.import java.math.BigInteger; 2.import java.security.Key;
3、3.import java.security.KeyFactory; 4.import java.security.interfaces.ECPrivateKey; 5.import java.security.interfaces.ECPublicKey; 6.import java.security.spec.ECFieldF2m; 7.import java.security.spec.ECParameterSpec; 8.import java.security.spec.ECPoint
4、; 9.import java.security.spec.ECPrivateKeySpec; 10.import java.security.spec.ECPublicKeySpec; 11.import java.security.spec.EllipticCurve; 12.import java.security.spec.PKCS8EncodedKeySpec; 13.import java.security.spec.X509EncodedKeySpec; 14.import ja
5、va.util.HashMap; 15.import java.util.Map; 16. 17.import javax.crypto.Cipher; 18.import javax.crypto.NullCipher; 19. 20.import sun.security.ec.ECKeyFactory; 1.import sun.security.ec.ECPrivateKeyImpl; 2.import sun.security.ec.ECPublicKeyImpl; 3. 4
6、./** 5. * ECC安全编码组件 6. * 7. * @author 梁栋 8. * @version 1.0 9. * @since 1.0 10. */ 11.public abstract class ECCCoder extends Coder { 12. 13. public static final String ALGORITHM = "EC"; 14. private static final String PUBLIC_KEY = "ECCPublicKey"
7、; 15. private static final String PRIVATE_KEY = "ECCPrivateKey"; 16. 17. /** 18. * 解密 19. * 用私钥解密 20. * 21. * @param data 22. * @param key 23. * @return 24. * @throws Exception 25. */ 26. public static byt
8、e[] decrypt(byte[] data, String key) throws Exception { 27. // 对密钥解密 28. byte[] keyBytes = decryptBASE64(key); 29. 30. // 取得私钥 31. PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8Encoded
此文档下载收益归作者所有