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、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- java/php/c#版rsa簽名以及java驗籤實現JavaPHPC#
- 安全基礎:數字信封、數字簽名、數字證書(加簽驗籤,加密解密)加密解密
- java和C#使用證照對引數簽名、加密JavaC#加密
- 公鑰加密、數字簽名、訊息認證加密
- Java 新增、驗證PDF 數字簽名Java
- Java 新增數字簽名到Excel以及檢測、刪除簽名JavaExcel
- Java 操作PPT數字簽名(一):新增、檢測、刪除簽名Java
- PAT1048數字加密(java實現)加密Java
- ActiveX控制元件數字簽名實踐(免費簽名)控制元件
- 前後端java+vue 實現rsa 加解密與摘要簽名演算法後端JavaVue解密演算法
- RSA簽名的PSS模式模式
- 大話數字簽名
- Java RSA (SHA1withRSA)簽名和驗籤Java
- 在VUE中使用RSA加密解密加簽解籤Vue加密解密
- 使用Java在PowerPoint中新增、驗證或刪除數字簽名Java
- 給軟體數字簽名
- Java 獲取PDF數字簽名證照資訊Java
- nodejs常用加密方式 RSA & AESNodeJS加密
- win10 如何禁用數字簽名 win10 關閉數字簽名方法Win10
- win10 禁止驗證數字簽名方法 win10 如何禁用數字簽名Win10
- PHP 做 RSA 簽名 生成訂單PHP
- 支付介面教程——公鑰與私鑰,雙鑰加密和數字簽名加密
- 網路安全實驗三 PGP 實現郵件加密和簽名加密
- 支付寶介面的數字簽名
- 如何關閉win10的數字簽名_win10禁用數字簽名的方法Win10
- 使用者下載已簽名的軟體後 如何知道數字簽名是否可信
- 使用 HTML5 Canvas 實現簽名功能HTMLCanvas
- 文件數字簽名工作原理是什麼?文件簽名有什麼好處?哪些行業使用文件簽名證書?行業
- win10如何永久禁用數字簽名_win10怎麼關閉禁用數字簽名Win10
- PHP RSA2 簽名演算法PHP演算法
- RSA加密解密(無資料大小限制,php、go、java互通實現)加密解密PHPGoJava
- "簡單"的加密簽名加密
- 如何在Outlook安裝使用S/MIME郵件證書實現郵件簽名加密加密
- 數字簽名的原理和應用
- windows10怎麼關閉數字簽名 win10永久關閉數字簽名的方法WindowsWin10
- 『現學現忘』Git基礎 — 11、配置Git使用者簽名的方式Git
- exe軟體如何進行數字簽名
- MACSHA256加密生成簽名Mac加密