所以我有一个字节数组,我要加密使用RSA这个数组,但我也想离开第一个字节触及这样的:的Java,RSA加密
//Before encryption:
byteArray[0] = 1;
byteArray[1] = 0;
byteArray[2] = 1;
//After encryption:
byteArray[0] = 1; //untouched
byteArray[1] = -127; //encrypted
byteArray[2] = 230; //encrypted
哪个doFinal的方法,我应该使用?
@edit 为什么这不起作用?
try
{
byte[] pack = new byte[4];
byte[] pack2;
byte[] pack3;
pack[0] = 1;
pack[1] = 2;
pack[2] = 3;
pack[3] = 4;
System.out.println("START!");
for(int i = 0; i < 4; i++)
{
System.out.println(pack[i]);
}
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(512);
KeyPair keyPair = keyPairGenerator.genKeyPair();
Cipher cip = Cipher.getInstance("RSA");
cip.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
pack2 = cip.doFinal(pack, 1, pack.length-1);
for(int i = 0; i < 4; i++)
{
System.out.println(pack2[i]);
}
Cipher cip2 = Cipher.getInstance("RSA");
cip2.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
pack3 = cip2.doFinal(pack2, 1, pack2.length-1);
for(int i = 0; i < 4; i++)
{
System.out.println(pack3[i]);
}
System.out.println("END!");
}
catch(Exception e)
{
e.printStackTrace();
}
和输出是:
START! 1 2 3 4 111 -44 120 103 java.lang.ArrayIndexOutOfBoundsException: 3
不,因为用户声明pack []的第一个字节没有加密。但pack3Tmp是解密的结果。加密是3个字节,所以你的解密输出是3个字节。 –
对不起,是的。错过了这是解密,而不是加密,因为滚动很多。 –