我想用 DES 加密一个整数,得到的密文也应该是一个整数。
解密函数也应该遵循这个概念。
我正在尝试通过将字节数组转换为整数而不是使用 Base64 编码来修改使用 DES 加密字符串中的代码。但是,解密函数会抛出不正确填充的异常,因为整数到 byte[] 的转换会导致 4 字节数组。
有没有其他加密算法可以用来实现这一点。
- 我不关心密文的弱点。
我想用 DES 加密一个整数,得到的密文也应该是一个整数。
解密函数也应该遵循这个概念。
我正在尝试通过将字节数组转换为整数而不是使用 Base64 编码来修改使用 DES 加密字符串中的代码。但是,解密函数会抛出不正确填充的异常,因为整数到 byte[] 的转换会导致 4 字节数组。
有没有其他加密算法可以用来实现这一点。
如果您通过 DES 运行一个整数值以生成另一个整数值,并且您不关心密文的弱点,那么您只是在进行非常昂贵的散列操作。您最好生成一个随机整数作为键并对指数和随机整数进行按位异或。这将需要几纳秒的时间来计算并具有完全相同的安全性。
DES 具有 64 位块大小,因此通常 32 位加密的输出int
将是 64 位块。long
将一个 64 位加密为另一个 64 位会更容易long
。使用 ECB 模式以便填充不是问题,或者至少您在前面添加零位以将int
其扩展到 64 位。
如果你只是想弄脏你的int
然后吉姆的建议是极好的。
您想查看Format Perserving Encryption。有几种技术,但一般来说,它们都会在与您的输入相同的域中生成一个值(即整数、信用卡号等)