欢迎来到天天文库
浏览记录
ID:8977169
大小:322.50 KB
页数:37页
时间:2018-04-13
《【每日一步】java加密技术》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、ECCECC-EllipticCurvesCryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。在软件注册保护方面起到很大的作用,一般的序列号通常由该算法产生。当我开始整理《Java加密技术(二)》的时候,我就已经在开始研究ECC了,但是关于Java实现ECC算法的资料实在是太少了,无论是国内还是国外的资料,无论是官方还是非官方的解释,最终只有一种答案——ECC算法在jdk1.5后加入支持,目前仅仅只能完成密钥的生成与解析。如果想要获得ECC算法实现,需要调用硬件完成加密/解密(ECC算法相当耗费资源,如果单纯使用CPU进行加密/
2、解密,效率低下),涉及到JavaCard领域,PKCS#11。其实,PKCS#11配置很简单,但缺乏硬件设备,无法尝试!尽管如此,我照旧提供相应的Java实现代码,以供大家参考。通过java代码实现如下:Java代码1importjava.math.BigInteger;2importjava.security.Key;3importjava.security.KeyFactory;4importjava.security.interfaces.ECPrivateKey;5importjava.security.interfaces.ECPublicKey;6importjava.s
3、ecurity.spec.ECFieldF2m;7importjava.security.spec.ECParameterSpec;8importjava.security.spec.ECPoint;9importjava.security.spec.ECPrivateKeySpec;10importjava.security.spec.ECPublicKeySpec;11importjava.security.spec.EllipticCurve;12importjava.security.spec.PKCS8EncodedKeySpec;13importjava.security
4、.spec.X509EncodedKeySpec;1importjava.util.HashMap;2importjava.util.Map;34importjavax.crypto.Cipher;5importjavax.crypto.NullCipher;67importsun.security.ec.ECKeyFactory;8importsun.security.ec.ECPrivateKeyImpl;9importsun.security.ec.ECPublicKeyImpl;1011/**12*ECC安全编码组件13*14*@author梁栋15*@version1.01
5、6*@since1.017*/18publicabstractclassECCCoderextendsCoder{1920publicstaticfinalStringALGORITHM="EC";21privatestaticfinalStringPUBLIC_KEY="ECCPublicKey";22privatestaticfinalStringPRIVATE_KEY="ECCPrivateKey";12/**3*解密4*用私钥解密5*6*@paramdata7*@paramkey8*@return9*@throwsException10*/11publicstatic
6、byte[]decrypt(byte[]data,Stringkey)throwsException{12//对密钥解密13byte[]keyBytes=decryptBASE64(key);1415//取得私钥16PKCS8EncodedKeySpecpkcs8KeySpec=newPKCS8EncodedKeySpec(keyBytes);17KeyFactorykeyFactory=ECKeyFactory.INSTANCE;1819ECPrivateKeypriKey=(ECPrivateKey)keyFactory20.generatePrivate(pkcs8KeySpe
7、c);211ECPrivateKeySpececPrivateKeySpec=newECPrivateKeySpec(priKey.getS(),2priKey.getParams());34//对数据解密5//TODOChipher不支持EC算法未能实现6Ciphercipher=newNullCipher();7//Cipher.getInstance(ALGORITHM,keyFactory.getProvider());8cipher.init(C
此文档下载收益归作者所有