gpt4 book ai didi

java - java 中带有 diffie-hellman 的 ftp 服务器

转载 作者:行者123 更新时间:2023-12-02 06:23:49 25 4
gpt4 key购买 nike

我只有java中的服务器端代码,我想为我的服务器使用diffie-hellman加密,所以任何人都可以帮助我,我是编程新手,我刚刚开始学习,所以这是我的作业和截止日期非常接近,所以任何人都可以帮助我,那就太好了......到目前为止,我得到了这个代码,但我不知道如何将它与我的服务器代码合并

import java.util.*;
import java.math.BigInteger;

public class DiffieHellmanBigInt {

final static BigInteger one = new BigInteger("1");

public static void main(String args[]) {

Scanner stdin = new Scanner(System.in);
BigInteger p;

// Get a start spot to pick a prime from the user.
System.out.println("Enter the approximate value of p you want.");
String ans = stdin.next();
p = getNextPrime(ans);
System.out.println("Your prime is "+p+".");

// Get the base for exponentiation from the user.
System.out.println("Now, enter a number in between 2 and p-1.");
BigInteger g = new BigInteger(stdin.next());

// Get A's secret number.
System.out.println("Person A: enter your secret number now.");
BigInteger a = new BigInteger(stdin.next());

// Make A's calculation.
BigInteger resulta = g.modPow(a,p);

System.out.println("Person A sends to person B "+resulta+".");

// Get B's secret number.
System.out.println("Person B: enter your secret number now.");
BigInteger b = new BigInteger(stdin.next());

// Make B's calculation.
BigInteger resultb = g.modPow(b,p);

System.out.println("Person B sends to person A "+resultb+".");

BigInteger KeyACalculates = resultb.modPow(a,p);
BigInteger KeyBCalculates = resulta.modPow(b,p);

// Print out the Key A calculates.
System.out.println("A takes "+resultb+" raises it to the power "+a+" mod "+p);
System.out.println("The Key A calculates is "+KeyACalculates+".");

// Print out the Key B calculates.
System.out.println("B takes "+resulta+" raises it to the power "+b+" mod "+p);
System.out.println("The Key B calculates is "+KeyBCalculates+".");

}

public static BigInteger getNextPrime(String ans) {

BigInteger test = new BigInteger(ans);
while (!test.isProbablePrime(99))
test = test.add(one);
return test;
}

}

最佳答案

由于评论太长...

Diffie-hellman 仅用于使用质数数学问题通过不 protected 连接进行 key 交换。它用于使用公钥和私钥初始化异步加密(如早期用于 SSL/TLS 的那样)。

除非需要作为练习(您应该添加作业或练习标签),否则不要自己实现此类安全内容,请使用现有的、经过良好测试的库。 Java 内置了对 SSL 的支持(也许使用其他 key 交换方法):SSLContext

尽管如此,您可以使用这些数字来派生公钥和私钥,但是,您必须确保它们确实很大(而不仅仅是 isProbablePrime)素数,这会变得很慢与BigInteger

要连接客户端和服务器,请从 Socket 开始。但再次声明,如果这不是练习,您很可能会受到攻击(黑客攻击、DDOS 攻击……),您最好使用现有的、经过良好测试和强化的服务器。

关于java - java 中带有 diffie-hellman 的 ftp 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com