数据签名标准算法-DSA (Digital signature Algorithm DSA)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据签名标准算法-DSA (Digital signature Algorithm DSA),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2300字,纯文字阅读大概需要4分钟。
内容图文
![数据签名标准算法-DSA (Digital signature Algorithm DSA)](/upload/InfoBanner/zyjiaocheng/1186/0c7fce0f3c4e436ba2ff25a341852b90.jpg)
public abstract class DSACoderSignature { private static final String PRIVATE_KEY = "RSAPrivate_Key"; privatestaticfinal String PUBLIC_KEY = "RSAPublic_key"; privatestaticfinalint KEY_SIZE = 1024; privatestaticfinal String KEY_ALGORITHM = "DSA"; privatestaticfinal String SIGNATURE_ALGORITHM = "SHA1withDSA"; publicstaticbyte[] getprivateKey(Map<String, Object> keyMap) throws Exception { Key key = (Key) keyMap.get(PRIVATE_KEY); return key.getEncoded(); } publicstaticbyte[] getPublicKey(Map<String, Object> keyMap) throws Exception { Key key = (Key) keyMap.get(PUBLIC_KEY); return key.getEncoded(); } /** * 生产公私钥 保存到Map里面 * @return * @throws Exception */publicstatic Map<String, Object> initKey() throws Exception { Map<String, Object> keyMap = new HashMap<String, Object>(2); KeyPairGenerator keyPaiGen = KeyPairGenerator.getInstance(KEY_ALGORITHM); keyPaiGen.initialize(KEY_SIZE); KeyPair pair = keyPaiGen.generateKeyPair(); DSAPublicKey publicKey = (DSAPublicKey) pair.getPublic(); DSAPrivateKey privateKey = (DSAPrivateKey) pair.getPrivate(); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; } /** * 用私钥生产数字签名, * @param data * @param privateKey * @return * @throws Exception */publicstaticbyte[] sign(byte[] data, byte[] privateKey) throws Exception { PKCS8EncodedKeySpec pkc = new PKCS8EncodedKeySpec(privateKey); KeyFactory keyfactory = KeyFactory.getInstance(KEY_ALGORITHM); PrivateKey prikey = keyfactory.generatePrivate(pkc); Signature sig = Signature.getInstance(SIGNATURE_ALGORITHM); sig.initSign(prikey); sig.update(data); return sig.sign(); } /** * 用公钥decryption,检验私钥encryption的正确性, * @param data * @param publicKey * @param signs 私钥生产的encryption数字证书 * @return * @throws Exception */publicstaticboolean verify(byte[] data, byte[] publicKey, byte[] signs) throws Exception { X509EncodedKeySpec pkc= new X509EncodedKeySpec(publicKey); KeyFactory keyfactory = KeyFactory.getInstance(KEY_ALGORITHM); PublicKey pubkey = keyfactory.generatePublic(pkc); Signature sig = Signature.getInstance(SIGNATURE_ALGORITHM); sig.initVerify(pubkey); sig.update(data); return sig.verify(signs); } }
原文:http://www.cnblogs.com/hqfblogs/p/4938999.html
内容总结
以上是互联网集市为您收集整理的数据签名标准算法-DSA (Digital signature Algorithm DSA)全部内容,希望文章能够帮你解决数据签名标准算法-DSA (Digital signature Algorithm DSA)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。