基于previous question,我在数据库中使用顺序整数作为记录ID。我想使用Skip32对整数ID进行模糊处理。我找到了Java implementation,但我不确定如何使用标准JCE API初始化它。我需要加密一个整数并根据需要解密它。有人能给我看一个例子吗?
答案 0 :(得分:2)
您找到的代码属于Cryptix project。你不仅需要这一个文件,而且你应该拿整个包。获取JCE包,将其安装为提供程序。然后你应该可以使用
Cipher c = Cipher.getInstance("SKIPJACK");
但实际上,使用BouncyCastle库(或其中的部分)可能更值得推荐,而不是像Cryptix那样使用不受支持的库。他们有很多文档,也有SkipJack-implementation。
我不确定为什么你需要使用Skipjack而不是你的JRE附带的任何密码 - 只是为了更小的块大小?
如果我理解正确,Skip32是一个单独的密码(工作在4字节块上),只是按照Skipjack(适用于8字节块)的类似原则构建。我没有找到任何规范,只有一些C和Perl源代码,所以我怀疑会有一些Java实现可用。请查看维基百科上的Format-preserving encryption或加密堆栈交换中的Can you create a strong blockcipher with small blocksize, given a strong blockcipher of conventional blocksize?,其中显示了从较大版本构建小块密码的其他方法。
答案 1 :(得分:1)
您可能会发现this blog post有关使用分组密码的安全排列有助于确定如何实现它。具有足够短块大小的任何分组密码都足够了。