快速业务通道

保护您的J2ME/MIDP应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
ainParameters(curve,                             curve.decodePoint(G),                             n ); ECKeyGenerationParameters ECKeyGenPara =          new ECKeyGenerationParameters(ECDomPara, sr); ECKeyPairGenerator ECKeyPairGen = new ECKeyPairGenerator(); ECKeyPairGen.init( ECKeyGenPara ); AsymmetricCipherKeyPair keyPair = ECKeyPairGen.generateKeyPair(); privKey = (ECPrivateKeyParameters) keyPair.getPrivate(); pubKey = (ECPublicKeyParameters) keyPair.getPublic();

保护您的J2ME/MIDP应用程序(6)

时间:2011-01-07 IBM Michael Juntao Yuan

公钥以参数 Q 来描述,并且用 pubKey.getQ() 方法来检索它。为了避免与模型参数 q 产生混淆,在方法中使用 QQ ,XML 元素名使用大写的 Q 。清单 9 显示了 ECDSAUtil 类中的方法。这些方法检索模型和密钥参数,它们是重新构造公钥对象所必需的。

清单 9. 用于检索模型和密钥参数的 ECDSAUtil 方法

// public key specific field public static String getQQ() throws Exception {   return (new String(Base64.encode(pubKey.getQ().getEncoded()))); } // Key parameter fields. Could also be retrieved from pubKey. public static String getQ() throws Exception {   return (new String(Base64.encode(q.toByteArray()))); } public static String getA() throws Exception {   return (new String(Base64.encode(a.toByteArray()))); } public static String getB() throws Exception {   return (new String(Base64.encode(b.toByteArray()))); } public static String getN() throws Exception {   return (new String(Base64.encode(n.toByteArray()))); } public static String getG() throws Exception {   return (new String(Base64.encode(G))); }

通过使用生成的私钥,实用程序类 ECDSASigUtil 可以从摘要获取两部分 DSA 签名 R 和 S :

清单 10. 检索 DSA 签名

static public String [] getSignature (String digest) throws Exception {   // Sign   ECDSASigner signer = new ECDSASigner();   signer.init( true, privKey );   BigInteger [] sigArray = signer.generateSignature( digest.getBytes());   String [] result = new String [2];   // Signature R   result[0] = new String(Base64.encode(sigArray[0].toByteArray()));   // Signature S   result[1] = new String(Base64.encode(sigArray[1].toByteArray()));   return result; }

服务器将摘要、签名和密钥参数编码成 ASCII 文本格式并以 XML 数字签名格式嵌入该文本。和检索方法名中一样,公钥参数 Q 被记录为 QQ ,以将它与相应 XML 元素中的密钥参数 q 区分开来,如清单 11 所示:

清单 11. 编码并以数字签名格式嵌入

<SignedMesg>   <mesg>Hello World</mesg>   <Signature>    <SignedInfo>     <SignatureMethod      Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />     <DigestValue>Ck1VqNd45QIvq3AZd8XYQLvEhtA=</DigestValue>    </SignedInfo>    <SignatureValue>     <R>NK/EIL2lrbFFCThnEuYlUWzh6IEfMsts</R>     <S>AMeJDecKWrQO6Eeehl3het+FlDDL4IedCA==</S>    </SignatureValue>    <KeyInfo>     <KeyValue>      <ECKeyValue>       <QQ>AwCiF5uG+

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号