ras私钥c#转java_java的RSA签名验签怎么转化成c#

static String publicExponent = "10001";static String privateExponent = "78bf10f3b7274ddd04da85a2b737dc524f717e765c16515f25479cf7db4627b116da3198fd54ef3732795cb9164029acd8e6c76d6bfa27bd9f433ad88ee7c2bd";static String modulus = "bddf972718f690b4d9e85de3a3a854ed4b72640914fb1073d07319687dbc8fc2b7b5701cce4cd47bdffd343a0e5b2762e572be07aa5c8d1201a035cc440c77a5";static{//generateKeyPair();

}/*** 生成一对密钥*/

static voidgenerateKeyPair()

{try{

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

gen.initialize(512);

KeyPair pair=gen.generateKeyPair();//rsa生成一对公私钥

RSAPublicKey publicKey =(RSAPublicKey) pair.getPublic();

RSAPrivateKey privateKey=(RSAPrivateKey) pair.getPrivate();

BigInteger md=publicKey.getModulus();

BigInteger pe=publicKey.getPublicExponent();

BigInteger _md=privateKey.getModulus();

BigInteger re=privateKey.getPrivateExponent();

assertEquals(md,_md);

publicExponent= pe.toString(16);

privateExponent= re.toString(16);

modulus= md.toString(16);

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

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

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

}catch(Exception igr)

{

igr.printStackTrace();

}

}public static String sign(final String plainData) throwsException

{

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

RSAPrivateKeySpec keySpec= new RSAPrivateKeySpec(new BigInteger(modulus, 16),new BigInteger(privateExponent, 16));

PrivateKey privateKey=keyFactory.generatePrivate(keySpec);

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

signature.initSign(privateKey);

signature.update(plainData.getBytes("UTF-8"));returnBase64.getEncoder().encodeToString(signature.sign());

}public static boolean verify(final String plainData, final String sign) throwsException

{

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

RSAPublicKeySpec keySpec= new RSAPublicKeySpec(new BigInteger(modulus, 16),new BigInteger(publicExponent, 16));

PublicKey publicKey=keyFactory.generatePublic(keySpec);final Signature signature = Signature.getInstance("SHA1withRSA");

signature.initVerify(publicKey);

signature.update(plainData.getBytes("UTF-8"));returnsignature.verify(Base64.getDecoder().decode(sign));

}/***@paramargs

*@throwsException*/

public static void main(String[] args) throwsException

{

String plainData= "ni hao ,今天天气不错";

String sign=sign(plainData);

System.out.println(sign);//ENRI/kCR/KCrQGyh9zf70Ce5RQtOg/9CJonPohvUgMUAOXeffVwHQCMZN/FxMf8+iTQUdOiDnm3RS9OWTwlUtQ==

System.out.println(verify(plainData, sign));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值