0
我需要在CBC模式下使用Blowfish加密来加密特定字符串,而不使用Java填充。我做了一些研究,我发现这个问题:encrypting and decrypting using java。在Java中以CBC模式使用Blowfish进行加密
我想知道如何在Cipher对象的init方法中使用基本字符串作为键。在这个例子中,keySpec不是一个字符串,而是一个用SHA-256加密的字符串。
在这个例子中:
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
其中keySpec
是SecretKeySpec
对象
我需要什么:
cipher.init(Cipher.ENCRYPT_MODE, keyString, ivSpec);
其中keyString
是String
对象
我知道使用一个基本的条纹ng不如自动生成一个安全。但是你知道我可以如何使用字符串作为关键吗?
我尝试,但我有一个错误: “输入长度不是8个字节的多个” 当我做: 字节[]加密= cipher.doFinal(token.getBytes()); 令牌长度需要是8个字节的倍数? – litil 2012-01-18 16:23:08
我不是Blowfish专家,互联网在今天罢工,所以我不能很快成为一个,但afaik Blowfish需要至少32位的密钥。不过,8字节的最低要求相当普遍。请问为什么你需要使用这么短的密钥? – wallenborn 2012-01-18 16:45:02
我发现我的错误。我尝试加密的字符串包含22个字符,其长度应该是8的倍数。所以我认为我必须使用填充。我应该使用哪一个? (我必须使用与PERL中的标准填充相同的值) – litil 2012-01-18 18:05:00