IllegalBlockSizeException when .jar compiled into .NET dll

J

javadev

Hello all

I have the following piece of code as part of my .jar file which is
then compiled into a .NET dll using IKVM. The code runs fine when run
as a jar but on using the .NET dll I receive an
IllegalBlockSizeException. Apparently the conversion into the dll is
causing the error, but I can't figure out what I need to do work
around this problem. Any help will be greatly appreciated.

Cipher ecipher = Cipher.getInstance("DES");
byte[] raw = "SOMESTR".getBytes();
byte[] result = new byte[8];
int resultIx = 1;
int bitCount = 0;

for(int i = 0; i < 56; i++)
{
boolean bit = (in[6 - i/8]&(1 << (i%8))) > 0;

if(bit)
{
result[7 - resultIx/8] |= (1 << (resultIx % 8)) & 0xFF;
bitCount++;
}
if((i + 1) % 7 == 0)
{
if(bitCount % 2 == 0)
result[7 - resultIx/8] |= 1;
resultIx++;
bitCount = 0;
}
resultIx++;
}

SecretKey mySpec = new SecretKeySpec(result, "DES");
ecipher.init(Cipher.ENCRYPT_MODE, mySpec);

byte[] utf8 = "encryptThis".getBytes("UTF8");
byte[] enc = ecipher.doFinal(utf8); // IllegalBlockSizeException here
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

javadev said:
I have the following piece of code as part of my .jar file which is
then compiled into a .NET dll using IKVM. The code runs fine when run
as a jar but on using the .NET dll I receive an
IllegalBlockSizeException. Apparently the conversion into the dll is
causing the error, but I can't figure out what I need to do work
around this problem. Any help will be greatly appreciated.
Cipher ecipher = Cipher.getInstance("DES");
ecipher.init(Cipher.ENCRYPT_MODE, mySpec);

byte[] utf8 = "encryptThis".getBytes("UTF8");
byte[] enc = ecipher.doFinal(utf8); // IllegalBlockSizeException here

IKVM is a very cool tool, but it is in no way supported !

Try encrypt a string that is a multipla of 8.

If that works then try:

Cipher.getInstance("DES/ECB/PKCS5Padding")

Arne
 
S

swetha

IKVM is a very cool tool, but it is in no way supported !

Try encrypt a string that is a multipla of 8.

If that works then try:

Cipher.getInstance("DES/ECB/PKCS5Padding")


I mailed the IKVM forums about some days back and yes, the "DES/ECB/
PKCS5Padding" was what they had suggested and it worked fine for me.
Thanks.
 
R

Roedy Green

SecretKey mySpec = new SecretKeySpec(result, "DES");
ecipher.init(Cipher.ENCRYPT_MODE, mySpec);

byte[] utf8 = "encryptThis".getBytes("UTF8");
byte[] enc = ecipher.doFinal(utf8); // IllegalBlockSizeException here

you have used a 256 -bit key. I would suspect that freaks the
Fatherland Security people who want to snoop on everything you do. Try
giving it a 56 bit key and see what happens.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,989
Messages
2,570,207
Members
46,783
Latest member
RickeyDort

Latest Threads

Top