私钥加密 公钥解密

私钥加密 公钥解密

我方公钥
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())));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中使用非对称加密算法实现私钥加密公钥解密的机制。这种加密方式是通过使用一对密钥:公钥私钥,来实现数据加解密的过程。其中,公钥是由私钥经过复杂运算得到的,具有加密能力;而私钥则由密钥持有者自己持有,用于解密数据。这样一来,即便是加密数据不慎泄露,仍然是安全的,因为数据只能由对应的私钥进行解密。Python中支持RSA算法,可以用pycryptodome或cryptography库来实现非对称加密。 使用非对称加密算法,首先需要对数据进行加密。这里使用RSA算法作为例子:选择两个不同且较大的质数p,q,计算出n=p*q,然后选取不大于 (p-1)*(q-1) 的数e作为公钥(这里称为公钥指数),计算出对应的私钥d(这里称为私钥指数)。然后,将公钥指数和n组成一个公钥私钥指数和n组成一个私钥加密的过程就是用公钥指数e和n对数据进行加密解密的过程就是用私钥指数d和n对加密数据进行解密。 Python中可以使用如下代码实现RSA加密解密: ```python # 加密 from Crypto.PublicKey import RSA msg = b'this is a secret message' key = RSA.generate(2048) pub_key = key.publickey() encrypted = pub_key.encrypt(msg, 32) # 解密 decrypted = key.decrypt(encrypted) ``` 需要注意的是,使用RSA算法进行加解密可能会涉及到数据长度的限制,因此可以采用数据分块的方式进行加解密。另外,在实际使用中,需要确保私钥的安全性,以免遭到泄露而导致数据的不安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值