Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #38365
| 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> |
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
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