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