私钥加密 公钥解密

傷城~ 2022-05-26 12:22 406阅读 0赞

私钥加密 公钥解密

我方公钥
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
我方持有对方的公钥和我方的私钥
对方持有我方公钥和自己的私钥
- 生成公钥私钥对

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

私钥进行数字签名

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

公钥进行验证

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

发表评论

表情:
评论列表 (有 0 条评论,406人围观)

还没有评论,来说两句吧...

相关阅读