私钥加密 公钥解密

私钥加密 公钥解密

我方公钥
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYJiltAnJWUDHXH+qMQdjYe+Rzgl0z53f54s92vh6QMfOtugAYtefG7AadCyCcSqETefqWxMQBYbK7tGZpCx6Mf/1j5RYFz2cYyUg9jwCJnVFyEqDwBRj9hmsLC+qkHOphvdgPa9xC3GIYPVajZJkxnS3xSoWenh4yxCdCIedjgQIDAQAB
我方私钥
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJgmKW0CclZQMdcf6oxB2Nh75HOCXTPnd/niz3a+HpAx8626ABi158bsBp0LIJxKoRN5+pbExAFhsru0ZmkLHox//WPlFgXPZxjJSD2PAImdUXISoPAFGP2GawsL6qQc6mG92A9r3ELcYhg9VqNkmTGdLfFKhZ6eHjLEJ0Ih52OBAgMBAAECgYA1W1S1xODiAheocKnpbAIm0TPpijMzS55YhMDqzHudZ9cj+pGkGM7ihM1A77EM/mMEmIdXrkNqlJ+AkiBEAEFCyOB3gvBH4UGi/ca4x2leI71v5YGmu+8GvSloK0hwtqstxrGQFfVdONJJWf6zq+EsBXsffVNRjQKtr4moVLjqTQJBAPQ0Nr7Nfp8JFesyYwyV1YkveYWXnhyTX5a88N9tkQdR9au9PJ1TvBhnZS3SutuzKWSpZBPsINo2ZyC446/GpMsCQQCff5y+S4bCeoBLoynkq1t1TM2Z0UdUyASnqr7t5MOypt0ySrBTqFvVxfHeUK9xTwEHcG99hYg7YFG5KKoj1NtjAkBCrELKI0bP2uYuGcqrM/liBCE0lSmo+Z+egyVsiviOvBTL99WlyqfPLeOU+DTmKOtDPXBCdDSf/zx21aPsaNqzAkAV7OPuINHAkDhsrVxH6+phoJIuz97/X5OMPOOMLkNcnqWPkUbV6THenBxYlDzZ1aNtk14wIhgNGXuCeX2R+WPDAkEAwInrzqVumqjaOimgEdctnTRiEtnLOyKOGiWQ4AsrB8jRUSEQ2pDHiydPjXVAriy2Xfy20w8GB4QMlJcwoW66wA==
对方公钥
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvyeLrhb0YZtd+7lnX4yo+0QV4bNWMcs4P2Njo92uxjI2aCItgJnnU7hJ721wGbUwZDSYKoQ7NImIcCWvOeMEdWh1j/cSr5oRwoFGnLPLHImGw9zC65qDmHDmDuFYj+z2UysY7fW6m97bPDKyGjJgiH3SxHSX+mgv7UCAZs27HNwIDAQAB
对方私钥
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAO/J4uuFvRhm137uWdfjKj7RBXhs1Yxyzg/Y2Oj3a7GMjZoIi2AmedTuEnvbXAZtTBkNJgqhDs0iYhwJa854wR1aHWP9xKvmhHCgUacs8sciYbD3MLrmoOYcOYO4ViP7PZTKxjt9bqb3ts8MrIaMmCIfdLEdJf6aC/tQIBmzbsc3AgMBAAECgYAeUhn2jCe4ETEIpN0JdnkeDlIxwxlRtCaoTFRJSRf+EHbLVm9BTjwzl5MQxFEjouhvdoEr8OetOr7LKsnOBujsLY0JbhEjQbkfYrHgzTtcpCWa4BsIr+2rbnZwzprYFZC3B/IrP1e6LZw8JFe+nENjcf7IIQB9nJ/0KWiZVpiG2QJBAP7IQ3jKU7bIjkHj614259jdvUHqOvKadEG9c08RS7RetgcXRAmKS5iD9X+mypzEGeHsE2hLN5zxspJm4u9g/QsCQQDw70cJy4Cosb+XI0Tm2vQH3ON/tj3gfZVIPzra5kt1pZv8pEWnovFnGBruTdZBoTF/+Y1u5YI4VeltyHOOB0IFAkEAvhmolkDIk5Iy6qDnpiVrehmAs+TT1N4/rilwFue9x7f/M209m6yvWP3kuDk35h4/fZ1Kob+1oAmLBsdzvc5tHwJBAKe0xmvo/UtvPn9Di4htzANVG/4fqn6Cq9C4Qo1wVAI2HpgC+IExiHtMaiKKh6LzQvNjj7ErjDMOigdiyhyIrMkCQQChZmwMjIKBKCNDPQWym8DWtpbO4cFnsb1jMfs608Vf7C5/jfYDQMbZtShMGqn2JdPuqfB9omGAeRNtewN5tZZL
我方持有对方的公钥和我方的私钥
对方持有我方公钥和自己的私钥
- 生成公钥私钥对

KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(“RSA”);// 用于生成公钥和私钥对
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");// 产生随机数
        byte[] seed = random.generateSeed(20);
        random = new SecureRandom(seed);
        keyGenerator.initialize(1024, random);
        KeyPair keyPair = keyGenerator.generateKeyPair();
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();
        Map<String, Object> keyMap = new HashMap<String, Object>();
        keyMap.put(“RSAPublicKey”, publicKey);
        keyMap.put(“RSAPrivateKey”, privateKey);

私钥进行数字签名

try {
            byte[] encodedKey = Base64.decodeBase64(privateKey.getBytes());
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encodedKey);
            KeyFactory keyFactory = KeyFactory.getInstance(“RSA”);
            PrivateKey key = keyFactory.generatePrivate(keySpec);
            Signature signature = Signature.getInstance(“MD5withRSA”);
            signature.initSign(key);
            signature.update(data);
            return new String(Base64.encodeBase64(Base64.encodeBase64(signature.sign())));
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("根据私钥对数据要进行签名异常");
        }

公钥进行验证

byte[] encodedKey = Base64.decodeBase64(publicKey.getBytes());
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encodedKey);
        KeyFactory keyFactory = KeyFactory.getInstance(“RSA”);
        PublicKey key = keyFactory.generatePublic(keySpec);
        Signature signature = Signature.getInstance(“MD5withRSA”);
        signature.initVerify(key);// 初始化验证
        signature.update(data);
        return signature.verify(Base64.decodeBase64(Base64.decodeBase64(sign.getBytes())));

猜你喜欢

转载自blog.csdn.net/u012526691/article/details/80166024