- getPrivateKey(aKeyMap);
- System.err.println("甲方公钥:\r" + aPublicKey);
- System.err.println("甲方私钥:\r" + aPrivateKey);
- // 由甲方公钥产生本地密钥对儿
- Map<String, Object> bKeyMap = DHCoder.initKey(aPublicKey);
- String bPublicKey = DHCoder.getPublicKey(bKeyMap);
- String bPrivateKey = DHCoder.getPrivateKey(bKeyMap);
- System.err.println("乙方公钥:\r" + bPublicKey);
- System.err.println("乙方私钥:\r" + bPrivateKey);
- String aInput = "abc ";
- System.err.println("原文: " + aInput);
- // 由甲方公钥,乙方私钥构建密文
- byte[] aCode = DHCoder.encrypt(aInput.getBytes(), aPublicKey,
- bPrivateKey);
- // 由乙方公钥,甲方私钥解密
- byte[] aDecode = DHCoder.decrypt(aCode, bPublicKey, aPrivateKey);
- String aOutput = (new String(aDecode));
- System.err.println("解密: " + aOutput);
- assertEquals(aInput, aOutput);
- System.err.println(" ===============反过来加密解密================== ");
- String bInput = "def ";
- System.err.println("原文: " + bInput);
- // 由乙方公钥,甲方私钥构建密文
- byte[] bCode = DHCoder.encrypt(bInput.getBytes(), bPublicKey,
- aPrivateKey);
- // 由甲方公钥,乙方私钥解密
- byte[] bDecode = DHCoder.decrypt(bCode, aPublicKey, bPrivateKey);
- String bOutput = (new String(bDecode));
- System.err.println("解密: " + bOutput);
- assertEquals(bInput, bOutput);
- }
- }
控制台输出:
- 甲方公钥:
- MIHfMIGXBgkqhkiG9w0BAwEwgYkCQQD8poLOjhLKuibvzPcRDlJtsHiwXt7LzR60ogjzrhYXrgHz
- W5Gkfm32NBPF4S7QiZvNEyrNUNmRUb3EPuc3WS4XAkBnhHGyepz0TukaScUUfbGpqvJE8FpDTWSG
- kx0tFCcbnjUDC3H9c9oXkGmzLik1Yw4cIGI1TQ2iCmxBblC+eUykAgIBgANDAAJAdAWBVmIzqcko
- Ej6qFjLDL2+Y3FPq1iRbnOyOpDj71yKaK1K+FhTv04B0zy4DKcvAASV7/Gv0W+bgqdmffRkqrQ==
- 甲方私钥:
- MIHRAgEAMIGXBgkqhkiG9w0BAwEwgYkCQQD8poLOjhLKuibvzPcRDlJtsHiwXt7LzR60ogjzrhYX
- rgHzW5Gkfm32NBPF4S7QiZvNEyrNUNmRUb3EPuc3WS4XAkBnhHGyepz0TukaScUUfbGpqvJE8FpD
- TWSGkx0tFCcbnjUDC3H9c9oXkGmzLik1Yw4cIGI1TQ2iCmxBblC+eUykAgIBgAQyAjACJRfy1LyR
- eHyD+4Hfb+xR0uoIGR1oL9i9Nk6g2AAuaDPgEVWHn+QXID13yL/uDos=
- 乙方公钥:
- MIHfMIGXBgkqhkiG9w0BAwEwgYkCQQD8poLOjhLKuibvzPcRDlJtsHiwXt7LzR60ogjzrhYXrgHz
- W5Gkfm32NBPF4S7QiZvNEyrNUNmRUb3EPuc3WS4XAkBnhHGyepz0TukaScUUfbGpqvJE8FpDTWSG
- kx0tFCcbnjUDC3H9c9oXkGmzLik1Yw4cIGI1TQ2iCmxBblC+eUykAgIBgANDAAJAVEYSfBA+I9nr
- dWw3OBv475C+eBrWBBYqt0m6/eu4ptuDQHwV4MmUtKAC2wc2nNrdb1wmBhY1X8RnWkJ1XmdDbQ==
- 乙方私钥:
- MIHSAgEAMIGXBgkqhkiG9w0BAwEwgYkCQQD8poLOjhLKuibvzPcRDlJtsHiwXt7LzR60ogjzrhYX
- rgHzW5Gkfm32NBPF4S7QiZvNEyrNUNmRUb3EPuc3WS4XAkBnhHGyepz0TukaScUUfbGpqvJE8FpD
- TWSGkx0tFCcbnjUDC3H9c9oXkGmzLik1Yw4cIGI1TQ2iCmxBblC+eUykAgIBgAQzAjEAqaZiCdXp
- 2iNpdBlHRaO9ir70wo2n32xNlIzIX19VLSPCDdeUWkgRv4CEj/8k+/yd
- 原文: abc
- 解密: abc
- ===============反过来加密解密==================
- 原文: def
- 解密: def
如我所言,甲乙双方在获得对方公钥后可以对发送给对方的数据加密,同时也能对接收到的数据解密,达到了数据安全通信的目的!
