栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ECDSA算法教程以对字符串进行签名

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ECDSA算法教程以对字符串进行签名

这是基于您的示例的小示例。

注意: 这是此答案的原始代码,请参阅下一个代码片段以获取更新的版本。

import java.math.BigInteger;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.SecureRandom;import java.security.Signature;public class ECDSAExample {    public static void main(String[] args) throws Exception {                        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");        keyGen.initialize(256, random);        KeyPair pair = keyGen.generateKeyPair();        PrivateKey priv = pair.getPrivate();        PublicKey pub = pair.getPublic();                Signature dsa = Signature.getInstance("SHA1withECDSA");        dsa.initSign(priv);        String str = "This is string to sign";        byte[] strByte = str.getBytes("UTF-8");        dsa.update(strByte);                byte[] realSig = dsa.sign();        System.out.println("Signature: " + new BigInteger(1, realSig).toString(16));    }}

更新:这是删除过时算法的稍微改进的示例。它还使用RFC
8422中
指定的SECG标记“ secp256r1”明确请求NIST
P-256曲线。

import javax.xml.bind.DatatypeConverter;import java.security.*;import java.security.spec.ECGenParameterSpec;public class ECDSAExample {        public static void main(String[] args) throws Exception {                        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");        keyGen.initialize(new ECGenParameterSpec("secp256r1"), new SecureRandom());        KeyPair pair = keyGen.generateKeyPair();        PrivateKey priv = pair.getPrivate();        PublicKey pub = pair.getPublic();                Signature ecdsa = Signature.getInstance("SHA256withECDSA");        ecdsa.initSign(priv);        String str = "This is string to sign";        byte[] strByte = str.getBytes("UTF-8");        ecdsa.update(strByte);                byte[] realSig = ecdsa.sign();        System.out.println("Signature: " + new BigInteger(1, realSig).toString(16));    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号