首页 / JAVA / java解析密钥格式
java解析密钥格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java解析密钥格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3855字,纯文字阅读大概需要6分钟。
内容图文
![java解析密钥格式](/upload/InfoBanner/zyjiaocheng/1315/08eef70feb364d338e314a8815663553.jpg)
import java.io.StringReader; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.DERBitString; import org.bouncycastle.asn1.DEREncodable; import org.bouncycastle.asn1.DERObjectIdentifier; import org.bouncycastle.asn1.DEROctetString; import org.bouncycastle.asn1.DERSequence; import org.bouncycastle.asn1.DERTaggedObject; import org.bouncycastle.openssl.PEMReader; import org.bouncycastle.util.encoders.Base64; // bcmail-jdk15-1.46 // bcprov-jdk15.1.46 @SuppressWarnings("all") publicclass CheckKeyFormat { /** * check sm2 PrivateKey Format * * @author 杜文磊 * * */publicstaticvoid main(String[] args) throws Exception { // String key = "-----BEGIN EC PRIVATE KEY-----" // + "MHcCAQEEIEzQsN3BumQJd5ri/9boIs8kluKKQNJ7DPxeT4TKSyPkoAoGCCqGSM49" // + "AwEHoUQDQgAEnr6UttffZuM/w8QehrCOtFm8FpjgJxHt+qRNcH0je+DSXVBJwZkV" // + "7slL7e1VbRe4mh0JsSuLu6XD5P3iHyOnsw==" // + "-----END EC PRIVATE KEY-----"; String key = "-----BEGIN EC PRIVATE KEY-----" + "MHcCAQEEIGsDOEC1seWulpvO0N09WmKvCOhMAD0eJY5y1i+0Na6HoAoGCCqBHM9V" + "AYItoUQDQgAE450G+j/3ndC+BA30RmbCMjsh12DhGLOwXy8X2VNC8Zb6F9IDgakb" + "B47+n2N8ct8tryfMORh08QckBY66PtuUkQ==" + "-----END EC PRIVATE KEY-----"; key = key.replace("-----BEGIN EC PRIVATE KEY-----", ""); key = key.replace("-----END EC PRIVATE KEY-----", ""); byte[] decKey = Base64.decode(key); DERSequence derSequence = (DERSequence) ASN1Sequence .fromByteArray(decKey); // 检查 version DEREncodable derIntegerValue = checkInteger_Version(derSequence); System.out.println("Integer : version = " + derIntegerValue); // 检查私钥长度 DEREncodable derSM2PrivateValue = checkSM2Private_length(derSequence); System.out.println("SM2Private : length = " + ((DEROctetString) derSM2PrivateValue.getDERObject()) .getOctets().length); // 检查OID DERObjectIdentifier derObjOID = checkOID(derSequence); System.out.println("OID = " + derObjOID); // 检查内容值 DERBitString derBitEnd = checkContent(derSequence); System.out.println("Content = " + derBitEnd.getString()); if(!derIntegerValue.toString().equals("1")){ System.out.println(" version is not 1 ! "); } if(!derObjOID.toString().equals("1.2.156.10197.1.301")){ System.err.println(" OID Not SM2 private key!"); // System.exit(0); } } /************************************************************utils******************************************************************/privatestatic DERBitString checkContent(DERSequence derSequence) { DEREncodable derEnd = derSequence.getObjectAt(3); if (!(derEnd.getDERObject() instanceof DERTaggedObject)) { System.out.println(false); } DERTaggedObject derTagEnd = (DERTaggedObject) derEnd.getDERObject(); if (!(derTagEnd.getObject() instanceof DERBitString)) { System.out.println(false); } DERBitString derBitEnd = (DERBitString) derTagEnd.getObject(); return derBitEnd; } /** * @see 检查OID * @param derSequence * @return*/privatestatic DERObjectIdentifier checkOID(DERSequence derSequence) { DEREncodable derOID = derSequence.getObjectAt(2); if (!(derOID.getDERObject() instanceof DERTaggedObject)) { System.out.println(false); } DERTaggedObject derTagOID = (DERTaggedObject) derOID; if (!(derTagOID.getObject() instanceof DERObjectIdentifier)) { System.out.println(false); } DERObjectIdentifier derObjOID = (DERObjectIdentifier) derTagOID .getObject(); return derObjOID; } /** * @see 检查私钥长度 * @param derSequence * @return*/privatestatic DEREncodable checkSM2Private_length(DERSequence derSequence) { DEREncodable derSM2PrivateValue = derSequence.getObjectAt(1); if (!(derSM2PrivateValue.getDERObject() instanceof DEROctetString)) { System.out.println(false); } return derSM2PrivateValue; } /** * @see 检查私钥version * @param derSequence * @return*/privatestatic DEREncodable checkInteger_Version(DERSequence derSequence) { DEREncodable derIntegerValue = derSequence.getObjectAt(0); return derIntegerValue; } }
原文:http://www.cnblogs.com/duwenlei/p/4317666.html
内容总结
以上是互联网集市为您收集整理的java解析密钥格式全部内容,希望文章能够帮你解决java解析密钥格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。