数字签名算法RSA
来源:互联网 发布:有声漫画软件 编辑:程序博客网 时间:2024/05/20 19:18
一 背景介绍
数字签名:带有密钥(公钥、私钥)的消息摘要算法。
验证数据完整性、认证数据来源、抗否认。
私钥签名、公钥验证。
常用算法:RSA、DSA、ECDSA
二 RSA介绍
包括MD和SHA两类
三 Java代码实现
package com.imooc.security.rsa2;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Signature;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import org.apache.commons.codec.binary.Hex;public class ImoocRSA {private static String src = "cakin security rsa";public static void main(String[] args) {jdkRSA();}public static void jdkRSA() {try {//1.初始化密钥KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(512);KeyPair keyPair = keyPairGenerator.generateKeyPair();RSAPublicKey rsaPublicKey = (RSAPublicKey)keyPair.getPublic();RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate();//2.执行签名PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());KeyFactory keyFactory = KeyFactory.getInstance("RSA");PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);Signature signature = Signature.getInstance("MD5withRSA");signature.initSign(privateKey);signature.update(src.getBytes());byte[] result = signature.sign();System.out.println("jdk rsa sign : " + Hex.encodeHexString(result));//3.验证签名X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());keyFactory = KeyFactory.getInstance("RSA");PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);signature = Signature.getInstance("MD5withRSA");signature.initVerify(publicKey);signature.update(src.getBytes());boolean bool = signature.verify(result);System.out.println("jdk rsa verify : " + bool);} catch (Exception e) {e.printStackTrace();}}}
四 实现效果
jdk rsa sign : 64b62967438d05f8f9837a089aaecd3b1379fd8eef89b924632536deb95d94d8389da456014ee953a1ac1befe44612c61b750b48c8574b98a9855a07a724e7e4
jdk rsa verify : true
五 应用场景
阅读全文
0 0
- 数字签名算法RSA
- 数字签名算法-RSA
- RSA数字签名算法
- RSA数字签名算法
- 数字签名算法RSA
- 数字签名算法RSA
- RSA 数据加密,数字签名算法
- 数字签名算法--1.RSA算法代码
- RSA算法和RSA数字签名算法的实现
- 基于JDK的RSA算法实现数字签名
- Java 数字签名算法RSA 的使用教程
- C#RSA非对称加密算法/数字签名算法
- JAVA加密算法- 数字签名算法(RSA、DSA)
- RSA - 数字签名
- 数字签名RSA
- 非对称加密(RSA、DH密钥交换算法、数字签名)
- 非对称加密(RSA、DH密钥交换算法、数字签名)
- 一个基于RSA算法的Java数字签名例子
- ARM体系结构下面内存和i/o映射区别
- AHK源代码加密器 v1.0
- RandomAccessFile基本操作
- AHK多个脚本共享全局变量 v1.0
- 微软的Chart控件的用法-折线图
- 数字签名算法RSA
- 屏幕抓字生成字库工具与找字函数 v5.6
- 数字签名算法DSA
- 程序加密启动 v2.6
- 在屏幕顶部居中显示当前时间
- 强大的老板键【中键隐藏并静音】
- 【鼠标键盘录像机】 v2.1
- 一个实用的AHK软件【语音数字】
- 注册码生成器 v2.2