java RSA算法(一)

本文介绍了Java中RSA加密的非对称性质,重点讨论了公钥的生成和编码问题。通过示例代码展示了如何生成64字节的公钥,并解释了公钥模数和指数的关系,强调了只要传递正确的模数和指数,不同平台间可以实现公钥加密的兼容性。
摘要由CSDN通过智能技术生成

RSA加密是非对称加密,密钥对分公钥与私钥。公钥是用来给别人加密的。但是呢,java生成的publicKey的getEncode方法返回的是java格式的公钥,其它平台是认识不了的。
例如生成512的公钥:
305C300D06092A864886F70D0101010500034B003048024100925FC3FC103F6E2209E77D8FAF59B48DE06AE86471CDD5D5A4FCA6A06070C38578F49444A73222A9B3DAFC8C71C2BE14ECDA5EDA0667BA91182CCB3546BB85AF0203010001
这个明显不止64个bytes。我们今天就说一下这个。
先看段生成公钥的代码:

    public static TKeyPair RSAinitKey(int Length) throws Exception {  
        KeyPairGenerator keyPairGen;

            keyPairGen = KeyPairGenerator  
                    .getInstance("RSA");
            keyPairGen.initialize(Length);  

            KeyPair keyPair = keyPairGen.generateKeyPair();  


            X509EncodedKeySpec keySpec=new X509EncodedKeySpec(keyPair.getPublic().getEncoded()); 
           // X509EncodedKeySpec priKeySpec=new X509EncodedKeySpec(keyPair.getPrivate().getEncoded()); 
            KeyFactory keyFactory=KeyFactory.getInstance("RSA");  
            RSAPublicKey publickey=(RSAPublicKey) keyFactory.generatePublic(keySpec);
            //PrivateKey privatekey=keyFactory.generatePrivate(priKeySpec);
            return new TKeyPair(keyPair.getPrivate().getEncoded(),publickey.getEncoded());  


    }
    private static void test3() {
        try {
            TKeyPair keypair = CertificateUtil.RSAinitKey(512)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值