签名,验证签名

对数据使用私钥进行签名。
然后使用公钥验证签名。

[code]import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.Signature;
import java.security.SignatureException;

public class Sign {
private static String digits = "0123456789abcdef";

/**
* @param args
* @throws NoSuchAlgorithmException
* @throws SignatureException
* @throws InvalidKeyException
*/
public static void main(String[] args) throws NoSuchAlgorithmException,
SignatureException, InvalidKeyException {
String alg = "RSA";
KeyPairGenerator kpg = KeyPairGenerator.getInstance(alg);
KeyPair kp = kpg.generateKeyPair();

byte[] data = "abc123".getBytes();
System.out.println("Data:" + toHex(data));

// sign
Signature sig1 = Signature.getInstance("NONEwithRSA");
sig1.initSign(kp.getPrivate());
sig1.update(data);
byte[] siged = sig1.sign();
System.out.println("Signed data:" + toHex(siged));

// verify
Signature sig2 = Signature.getInstance("NONEwithRSA");
sig2.initVerify(kp.getPublic());
sig2.update(data);
System.out.println("result:" + sig2.verify(siged));
}

public static String toHex(byte[] data) {
StringBuffer buf = new StringBuffer();

for (int i = 0; i != data.length; i++) {
int v = data[i] & 0xff;

buf.append(digits.charAt(v >> 4));
buf.append(digits.charAt(v & 0xf));
}

return buf.toString();
}
}[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值