我正在尝试实现diffie-hellman算法来交换我的加密密钥,我在分配数组的总数时遇到了问题。这就是我尝试过的:
private static final String privatekey = "password";
private static final String publickey = "aloha";
private static final byte[] b = privatekey.getBytes();
private static final byte[] c = publickey.getBytes();
private static byte[] keyValue;
public void createCommonKey(){
for(int i=0; i<b.length; i++){
keyValue[i]=(byte)(b[i]+c[i]);
}
System.out.println(keyValue);
}
当我尝试运行时,它会给我一个nullpointerexception。我明白为什么会这样,因为这两个键的长度与数组不同。这就是我要问的,我需要纠正什么才能让这一切顺利进行。一开始我试着分别添加每个数组,然后将这两个值添加到keyvalue数组中,但是这不起作用,因为其中的值是value而不是数组。我考虑过在数组[0]中添加arrays元素,并将0从元素[1]放到[length]中,但我不确定这是否正确,因为我处理的是字节,所以我不知道0是否真的有字节值。所以我想听听你的想法,我请求你的帮助。
1条答案
按热度按时间rnmwe5a21#
这个
NullPointerException
不是由于数组的长度可能不同,而是因为keyValue
是null
. 你可以加上使这个错误消失。
但是,数组的长度不同,这将导致
ArrayIndexOutOfBoundsException
什么时候b.length
大于c.length
. 我不知道diffie-hellmann的细节,但一个简单的方法可能是让索引在变得太大时“ Package ”: