Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38365

Re: Cipher.getInstance causing exception saying "length=4 index=7"

Newsgroups comp.lang.java.programmer
Date 2018-06-12 08:33 -0700
References <20305580-c3c7-4309-83ba-e3cbe594ec21@googlegroups.com> <d6b69d23-f7a5-43f4-a801-93f79804d4fc@googlegroups.com>
Message-ID <df520458-b03d-43ad-ba34-8ab2f2c79888@googlegroups.com> (permalink)
Subject Re: Cipher.getInstance causing exception saying "length=4 index=7"
From Eric Douglas <e.d.programmer@gmail.com>

Show all headers | View raw


On Tuesday, June 12, 2018 at 10:41:09 AM UTC-4, Eric Douglas wrote:
> On Tuesday, June 12, 2018 at 7:38:49 AM UTC-4, tedpo...@gmail.com wrote:
> > I have a small test program to try and encrypt the message hello world.  It keeps causing a exception when it calls getinstance.  code
> > 
> >        void test()     
> >             {
> >             try{    
> >             Cipher desCipher;
> >             byte[] internalKey={23,55,34,66,33,77};
> >             String str=("hellow world");
> >             myDesKey = new SecretKeySpec(internalKey, 0,4,"DES");
> >             desCipher = Cipher.getInstance("DES");
> > 
> >             // exception goes off here
> >             desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
> >           
> >   byte[] text = str.getBytes("UTF8");
> >             byte[] textEncrypted = desCipher.doFinal(text);
> > 
> >         } catch(Exception e)
> >         {
> >            
> >             String m=e.getMessage();
> >             return false;
> >         }
> >         return true;
> >     }
> 
> The exception is on the init, not the getInstance.  It appears your internalKey is wrong.  Did you read the Javadoc?
> 
> public SecretKeySpec(byte[] key,
>                      int offset,
>                      int len,
>                      String algorithm)
> 
> Constructs a secret key from the given byte array, using the first len bytes of key, starting at offset inclusive. 
> The bytes that constitute the secret key are those between key[offset] and key[offset+len-1] inclusive. 
> 
> This constructor does not check if the given bytes indeed specify a secret key of the specified algorithm. For example, if the algorithm is DES, this constructor does not check if key is 8 bytes long, and also does not check for weak or semi-weak keys. In order for those checks to be performed, an algorithm-specific key specification class (in this case: DESKeySpec) must be used.

If I change the value, the method returns true.  If you want a 4 byte encryption don't use DES.

               byte[] internalKey = { 23, 55, 34, 66, 33, 77, 32, 73 };
               String str = ("hellow world");
               SecretKeySpec myDesKey = new SecretKeySpec(internalKey, 0, 8, "DES");

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

Cipher.getInstance causing exception saying "length=4 index=7" tedpottel5@gmail.com - 2018-06-12 04:38 -0700
  Re: Cipher.getInstance causing exception saying "length=4 index=7" Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-06-12 08:57 -0400
    Re: Cipher.getInstance causing exception saying "length=4 index=7" Eric Douglas <e.d.programmer@gmail.com> - 2018-06-12 07:36 -0700
      Re: Cipher.getInstance causing exception saying "length=4 index=7" Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-06-12 11:57 -0400
        Re: Cipher.getInstance causing exception saying "length=4 index=7" v_borchert@despammed.com (Volker Borchert) - 2018-06-12 19:32 +0000
  Re: Cipher.getInstance causing exception saying "length=4 index=7" Eric Douglas <e.d.programmer@gmail.com> - 2018-06-12 07:41 -0700
    Re: Cipher.getInstance causing exception saying "length=4 index=7" Eric Douglas <e.d.programmer@gmail.com> - 2018-06-12 08:33 -0700

csiph-web