1

Based on a previous question, I am using a sequential integer as a record ID in my database. I want to obfuscate the integer IDs using Skip32. I found a Java implementation but I am uncertain of how to initialize it using the standard JCE APIs. I need to encrypt an integer and decrypt it as necessary. Can anyone show me an example of this?

Community
  • 1
  • 1
Adam
  • 4,590
  • 10
  • 51
  • 84

2 Answers2

2

The code you found belongs to the Cryptix project. You need not just this one file, but you should take the whole package. Take the JCE package, install it as a provider. Then you should be able to use

Cipher c = Cipher.getInstance("SKIPJACK");

But actually, instead of using an unsupported library like Cryptix, using the BouncyCastle library (or parts thereof) might be more recommendable. They have lots of documentation, and a SkipJack-implementation, too.

I'm not sure why you would need to use Skipjack instead of any cipher which comes with your JRE, though - just for the smaller block size?

If I understand right, Skip32 is a separate cipher (working on 4-byte blocks), just build by similar principles like Skipjack (which works on 8-byte blocks). I didn't find any specification of it, only some C and Perl source code, so I doubt there will be some Java implementation available. Have a look at Format-preserving encryption on Wikipedia, or Can you create a strong blockcipher with small blocksize, given a strong blockcipher of conventional blocksize? on Cryptography Stack Exchange, which show other ways of building a small-block cipher from a larger one.

Community
  • 1
  • 1
Paŭlo Ebermann
  • 73,284
  • 20
  • 146
  • 210
  • I would love to use something already included in the JRE if possible. Skipjack was just recommended to me. I just need to obfuscate sequential integer IDs from my database and also de-obfuscate them. If you know of an implementation that can do that inside the JRE, I would greatly appreciate an example of it. I would prefer only 6-12 characters in the output. – Adam Oct 17 '11 at 19:03
1

You might find this blog post on secure permutations with block ciphers useful in figuring out how to implement it. Any block cipher with a sufficiently short block size will suffice.

Nick Johnson
  • 100,655
  • 16
  • 128
  • 198