【发布时间】:2013-01-20 05:58:04
【问题描述】:
我遇到了一些使用 Bouncy Castle 加密数据的代码,但我找不到任何文档来说明正在使用哪种算法来加密数据或密钥使用了多少位。我也找不到 Bouncy Castle 的讨论论坛。有谁知道这是使用什么算法以及密钥有多少位?
BlowfishEngine blowfishEngine = new BlowfishEngine();
CBCBlockCipher cbcBlockCipher = new CBCBlockCipher(blowfishEngine);
KeyParameter key = new KeyParameter(key);
BufferedBlockCipher cipher = new PaddedBlockCipher(cbcBlockCipher);
cipher.init(true, key);
int size = cipher.getOutputSize(data.length);
byte[] result = new byte[size];
int olen = cipher.processBytes(data, 0, data.length, result, 0);
olen += cipher.doFinal(result, olen);
if (olen < size)
{
byte[] tmp = new byte[olen];
System.arraycopy(result, 0, tmp, 0, olen);
result = tmp;
}
【问题讨论】:
-
好吧,算法本身 - 显然 - Blowfish。并且密钥的大小取决于给
KeyParameter构造函数的密钥的大小。可以在此处找到包的文档:bouncycastle.org/docs/docs1.5on/index.html(尽管您的 java 代码无法正常工作,因为您引入了名为key的第二个变量)。 -
谢谢。我在这里减少了代码的大小,并移动了一些东西来压缩这里。它确实适用于我的原始源文件。我没有加密经验,所以我不知道 Blowfish 是一种算法,即使我阅读了 Bouncy Castle 网站上的课程描述。那么如果这个人输入一个 8 个字符的密钥,这意味着数据是用 64 位加密的(每个字符 1 个字节)?所以如果他们想要 256 位,他们必须输入 32 个字符?
-
嗯,我想是的,但应该都可以从我链接的 API 文档中获得。