diffiehellman java_Java Diffie-Hellman密钥交换

你已经选择了bouncycastle版本.但是为了学习目的,我实现了一个helloworld版本.对于那些只想在没有依赖关系的纯Java中使用Diffie-Hellman的人来说,它可能会有所帮助:

// 1. ------------------------------------------------------------------

// This is Alice and Bob

// Alice and Bob want to chat securely. But how?

final Person alice = new Person();

final Person bob = new Person();

// ? ?

//

// O O

// /|\ /|\

// / \ / \

//

// ALICE BOB

// 2. ------------------------------------------------------------------

// Alice and Bob generate public and private keys.

alice.generateKeys();

bob.generateKeys();

//

// O O

// /|\ /|\

// / \ / \

//

// ALICE BOB

// _ PUBLIC KEY _ PUBLIC KEY

// _ PRIVATE KEY _ PRIVATE KEY

// 3. ------------------------------------------------------------------

// Alice and Bob exchange public keys with each other.

alice.receivePublicKeyFrom(bob);

bob.receivePublicKeyFrom(alice);

//

// O O

// /|\ /|\

// / \ / \

//

// ALICE BOB

// + public key + public key

// + private key + private key

// _ PUBLIC KEY _ PUBLIC KEY

// 4. ------------------------------------------------------------------

// Alice generates common secret key via using her private key and Bob's public key.

// Bob generates common secret key via using his private key and Alice's public key.

// Both secret keys are equal without TRANSFERRING. This is the magic of Diffie-Helman algorithm.

alice.generateCommonSecretKey();

bob.generateCommonSecretKey();

//

// O O

// /|\ /|\

// / \ / \

//

// ALICE BOB

// + public key + public key

// + private key + private key

// + public key + public key

// _ SECRET KEY _ SECRET KEY

// 5. ------------------------------------------------------------------

// Alice encrypts message using the secret key and sends to Bob

alice.encryptAndSendMessage("Bob! Guess Who I am.", bob);

//

// O O

// /|\ []--------------------------------> /|\

// / \ / \

//

// ALICE BOB

// + public key + public key

// + private key + private key

// + public key + public key

// + secret key + secret key

// + message _ MESSAGE

// 6. ------------------------------------------------------------------

// Bob receives the important message and decrypts with secret key.

bob.whisperTheSecretMessage();

//

// O ((( ((( ((( \O/ )))

// /|\ |

// / \ / \

//

// ALICE BOB

// + public key + public key

// + private key + private key

// + public key + public key

// + secret key + secret key

// + message + message

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值