【发布时间】:2014-04-06 04:39:47
【问题描述】:
Blowfish 能够进行强加密,并且可以使用最大 56 字节的密钥(448 位密钥)。 密钥必须是 8 个字节的倍数(最多 56 个)。
我想写的例子会自动填充和取消填充键的大小。因为 Blowfish 创建了 8 字节加密输出块,所以输出也被填充和不填充到 8 字节的倍数。
其实是想写java代码来模拟—— http://webnet77.com/cgi-bin/helpers/blowfish.pl
我正在使用工具信息-
ALGORITM = "Blowfish";
HEX KEY = "92514c2df6e22f079acabedce08f8ac3";
PLAIN_TEXT = "sangasong@song.com"
工具返回-
CD3A08381467823D4013960E75E465F0B00C5E3BAEFBECBB
请提出建议。
试过java代码:
public class TestBlowfish
{
final String KEY = "92514c2df6e22f079acabedce08f8ac3";
final String PLAIN_TEXT = "sangasong@song.com";
byte[] keyBytes = DatatypeConverter.parseHexBinary(KEY);
}
public static void main(String[] args) throws Exception
{
try
{
byte[] encrypted = encrypt(keyBytes, PLAIN_TEXT);
System.out.println( "Encrypted hex: " + Hex.encodeHexString(encrypted));
}catch (GeneralSecurityException e)
{
e.printStackTrace();
}
}
private static byte[] encrypt(byte[] key, String plainText) throws GeneralSecurityException
{
SecretKey secret_key = new SecretKeySpec(key, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, secret_key);
return cipher.doFinal(plainText.getBytes());
}
结果 -
Encrypted hex: 525bd4bd786a545fe7786b0076b3bbc2127425f0ea58c29d
【问题讨论】:
-
建议...什么?到目前为止,您尝试过什么吗?为什么需要垫一个键?它应该以正确的大小生成。那你为什么要取消填充呢?
-
@Cocoop,我已经编辑了我的问题。请看看我到目前为止所做的尝试。
-
好!现在你运行它并遇到任何错误吗?
-
没有错误。但输出与工具不同。我们的客户端使用 webnet77 工具加密并向我们发送加密代码。在原始帖子中添加输出。
-
@Cocoop ,实际上尝试了各种方式和顺序来加密,但没有得到与工具相同的结果。
标签: java encryption cryptography blowfish