java使用RSA加密方式,實現數字簽名
全棧工程師開發手冊 (作者:欒鵬)
java使用RSA加密方式,實現數字簽名。數字簽名,使用私鑰獲取簽名,使用公鑰校驗簽名
測試程式碼
public static void main(String args[]) throws Exception{
DigitalSignDemo ds=new DigitalSignDemo();
ds.generateKey(); //產生私鑰和公鑰
byte[] signeddata=ds.sign("test.txt"); //檔案簽名
// 列印簽名
for(int i=0; i<signeddata.length; i++){
System.out.println(signeddata[i]);
}
ds.checkSign("test.txt",signeddata); //校驗簽名
}
數字簽名工具類的實現
package com.lp.app.safe;
import java.io.*;
import java.security.*;
import java.security.interfaces.*;
public class DigitalSignDemo{
PublicKey pbkey;
PrivateKey prkey;
public void generateKey() {
try {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
pbkey = kp.getPublic();
prkey = kp.getPrivate();
} catch (Exception e) {
}
}
//檔案簽名
public byte[] sign(String path) throws Exception{
//獲取要簽名的資料
FileInputStream f = new FileInputStream(path);
int num = f.available();
byte[] data = new byte[num];
f.read(data);
// 獲取私鑰
RSAPrivateKey prk = (RSAPrivateKey)prkey;
Signature s = Signature.getInstance("MD5WithRSA");
s.initSign(prk);
s.update(data);
//資料簽名
byte[] signeddata = s.sign();
return signeddata;
}
//校驗簽名
public void checkSign(String path,byte[] signeddata) throws Exception{
FileInputStream f = new FileInputStream(path);
int num = f.available();
byte[] data = new byte[num];
f.read(data);
// 讀公鑰
RSAPublicKey pbk = (RSAPublicKey)pbkey;
// 獲取物件
Signature s = Signature.getInstance("MD5WithRSA");
//初始化
s.initVerify(pbk);
// 傳入原始資料
s.update(data);
boolean ok = false;
try{
//用簽名驗證原始資料
ok = s.verify(signeddata);
System.out.println(ok);
}
catch(SignatureException e){
System.out.println(e);
}
System.out.println("校驗結束!");
}
}
相關文章
- RSA加密解密及數字簽名Java實現加密解密Java
- 加密與數字簽名加密
- python實現aes加密解密,RSA簽名和驗籤,RSA加密解密,並呼叫介面Python加密解密
- Java安全之對稱加密、非對稱加密、數字簽名Java加密
- 對稱加密、非對稱加密、RSA、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- 數字簽名(java) (轉)Java
- java/php/c#版rsa簽名以及java驗籤實現JavaPHPC#
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- 一篇搞定RSA加密與SHA簽名|與Java完全同步加密Java
- 深入理解加密、解密、數字簽名和數字證書加密解密
- 數字簽名
- java和C#使用證照對引數簽名、加密JavaC#加密
- 公鑰加密、數字簽名、訊息認證加密
- Java 新增、驗證PDF 數字簽名Java
- 數字簽名原理
- Java 操作PPT數字簽名(一):新增、檢測、刪除簽名Java
- Java 新增數字簽名到Excel以及檢測、刪除簽名JavaExcel
- ActiveX控制元件數字簽名實踐(免費簽名)控制元件
- 大話數字簽名
- Elgamal數字簽名原理GAM
- PAT1048數字加密(java實現)加密Java
- 前後端java+vue 實現rsa 加解密與摘要簽名演算法後端JavaVue解密演算法
- Java 獲取PDF數字簽名證照資訊Java
- java使用DES加密方式,實現對資料的加密解密Java加密解密
- Java RSA (SHA1withRSA)簽名和驗籤Java
- 在VUE中使用RSA加密解密加簽解籤Vue加密解密
- 數字簽名是什麼?
- applet數字簽名APP
- 給軟體數字簽名
- RSA簽名的PSS模式模式
- python RSA簽名和解籤Python
- win10 如何禁用數字簽名 win10 關閉數字簽名方法Win10
- ExchangeServer2010安全郵件之數字簽名/加密Server加密
- 使用Java在PowerPoint中新增、驗證或刪除數字簽名Java
- win10 禁止驗證數字簽名方法 win10 如何禁用數字簽名Win10
- 加減密和數字簽名
- PHP 做 RSA 簽名 生成訂單PHP