博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据签名标准算法-DSA (Digital signature Algorithm DSA)
阅读量:7180 次
发布时间:2019-06-29

本文共 2624 字,大约阅读时间需要 8 分钟。

        支持的算法有 : SHA1withDSA  224 , 256 , 384, 512 
public abstract class DSACoderSignature {    private static final String PRIVATE_KEY = "RSAPrivate_Key";    private static final String PUBLIC_KEY = "RSAPublic_key";    private static final int KEY_SIZE = 1024;    private static final String KEY_ALGORITHM = "DSA";    private static final String SIGNATURE_ALGORITHM = "SHA1withDSA";    public static byte[] getprivateKey(Map
keyMap) throws Exception { Key key = (Key) keyMap.get(PRIVATE_KEY); return key.getEncoded(); } public static byte[] getPublicKey(Map
keyMap) throws Exception { Key key = (Key) keyMap.get(PUBLIC_KEY); return key.getEncoded(); } /** * 生产公私钥 保存到Map里面 * @return * @throws Exception */ public static Map
initKey() throws Exception { Map
keyMap = new HashMap
(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 */ public static byte[] 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 */ public static boolean 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); }}

 

转载于:https://www.cnblogs.com/hqfblogs/p/4938999.html

你可能感兴趣的文章
windows XP 获取网卡MAC和IP地址
查看>>
python对象类型与运算
查看>>
SNMP 诊断方法
查看>>
ELK日志分析集群部署笔记
查看>>
随机挑几个--脚本
查看>>
python操作数据库之读取数据库数据方法
查看>>
HTTPS工作原理
查看>>
DHCP服务器与NIS服务器
查看>>
Android官方开发文档Training系列课程中文版:分享简单数据之发送简单数据给其它APP...
查看>>
spring boot 框架 启动更新项目,以及生成 "实体_"文件
查看>>
Asp编程中的一些重要函数(2)
查看>>
免运费:卓越亚马逊的最后一搏?
查看>>
Android官方开发文档Training系列课程中文版:手势处理之ViewGroup的事件管理
查看>>
linux-Kickstart
查看>>
1月2日课程笔记 lvm介绍与实际操作
查看>>
windows Server 2012安装DNS步骤
查看>>
图像压缩的王者:Image Optimizer V5.1 汉化修正绿色版
查看>>
Nginx + CGI/FastCGI + C/Cpp
查看>>
mysql创建用户
查看>>
暑假期间学习不错的网网页
查看>>