我自己写了个DH秘钥的demo代码, 以前加密用过AES的加密,全套代码写下来太费时间又没技术含量。
如果你需要AES的加密代码可以留个邮箱给我。
public class Test1 {public static final int P=30//公开的大家都知道的
public static final int G=9//公开的大家都知道的
public static void main(String[] args) {
A x = new A()
int one = x.getV()
//分割 A 代表A这边的系统加密 one 代表是给别人的值
B y = new B()
int two = y.getV()
//B 代表另外一边加密 two 代表是给别人的值
System.out.println(x.getKey(two))
System.out.println(y.getKey(one))
}
}
class A{
private int a//自己的私有密值,不会告诉任何人
public A() {
Random r = new Random(200)
a=r.nextInt()
}
public int getV(){
return (Test1.G^a)%Test1.P
}
public int getKey(int v){
return (v^a)%Test1.P
}
}
class B{
private int b//自己的私有密值,不会告诉任何人
public B() {
Random r = new Random(200)
b=r.nextInt()
}
public int getV(){
return (Test1.G^b)%Test1.P
}
public int getKey(int v){
return (v^b)%Test1.P
}
}
DH组的本质是使用非对称密钥来加密对称密钥。DH算法过程:
1、相互产生密钥对
2、交换公钥
3、用对方的公钥和自己的私钥运行DH算法——得到另外一个密钥X(这里的奇妙之处是这个值两端都是一样的)
4、A产生对称加密密钥,用密钥X加密这个对称的加密密钥——发送到B
5、B用密钥X解密——得到对称的加密密钥
6、B用这个对称的加密密钥来解密A的数据