亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

封裝簽名和驗簽兩個方法驗證不成功

// 簽名方法

public static String jdkRSASign(String src) {

String result = null;// 簽名結果

try {

// 1.初始化秘鑰

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");

keyPairGenerator.initialize(512);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

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("UTF-8"));

result = new String(signature.sign(),"UTF-8");

} catch (Exception e) {

e.printStackTrace();

}


return result;

}


// 驗簽名方法

public static boolean jdkRSACheck(String src, String sign) {

boolean result = false;

try {

// 1.初始化秘鑰

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");

keyPairGenerator.initialize(512);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();// 公鑰


// 2.驗證簽名

X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());

KeyFactory keyFactory = KeyFactory.getInstance("RSA");

PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);

Signature signature = Signature.getInstance("MD5withRSA");

signature.initVerify(publicKey);

signature.update(src.getBytes("UTF-8"));

result = signature.verify(sign.getBytes("UTF-8"));

} catch (Exception e) {

e.printStackTrace();

}


return result;

}


正在回答

1 回答

package com.dhs.test;


import java.security.KeyFactory;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.NoSuchAlgorithmException;

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.bouncycastle.util.encoders.Hex;


public class RSATest {

public static final String SRC_STRING = "fdsfsfsfsfd";

public static void main(String[] args) {

try {

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");

keyPairGenerator.initialize(512);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();// 私鑰

RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();// 公鑰

String sign = jdkRSASign(rsaPrivateKey, SRC_STRING);

System.out.println("sign:"+sign);

boolean bool = jdkRSACheck(rsaPublicKey, SRC_STRING, sign);

System.out.println(bool);

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 簽名方法

public static String jdkRSASign(RSAPrivateKey rsaPrivateKey, String src) {

String result = null;// 簽名結果

try {

// 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("UTF-8"));

result = Hex.toHexString(signature.sign());

} catch (Exception e) {

e.printStackTrace();

}


return result;

}


// 驗簽名方法

public static boolean jdkRSACheck(RSAPublicKey rsaPublicKey, String src, String sign) {

boolean result = false;

try {

// 2.驗證簽名

X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(

rsaPublicKey.getEncoded());

KeyFactory keyFactory = KeyFactory.getInstance("RSA");

PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);

Signature signature = Signature.getInstance("MD5withRSA");

signature.initVerify(publicKey);

signature.update(src.getBytes("UTF-8"));

result = signature.verify(Hex.decode(sign));

} catch (Exception e) {

e.printStackTrace();

}


return result;

}

}


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

封裝簽名和驗簽兩個方法驗證不成功

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號