0

Android で Bouncy Castle の Blowfish 暗号化を使用すると、暗号化プロセスが非常に遅いことにかなり驚きました。3 MB のファイルに 3 分以上かかりました。非常に高速な他のアルゴリズムはありますか?信頼性の低いセキュリティで生活できます。これがコードです。すべてはメモリ内で行われます。ファイルがありません。

private BufferedBlockCipher cipher;
private KeyParameter key;

public Encryption(byte[] key)
{
  try
  {
    BlowfishEngine blowfishEngine = new BlowfishEngine();
    CBCBlockCipher cbcBlockCipher = new CBCBlockCipher(blowfishEngine);

    cipher = new org.spongycastle.crypto.modes.PaddedBlockCipher(cbcBlockCipher);

    this.key = new KeyParameter(key);
  }
  catch (Exception ex)
  {
  }
}

public Encryption(String key)
{
  this(key.getBytes());
}

public synchronized byte[] Encrypt(byte[] data) throws CryptoException
{
  try
  {
    if (data == null || data.length == 0)
    {
      return new byte[0];
    }

    cipher.init(true, key);
    return CallCipher(data);
  }
  catch (Exception ex)
  {
    return null;
  }
}

private byte[] CallCipher(byte[] data) throws CryptoException
{
  try
  {
    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;
    }

    return result;
  }
  catch (Exception ex)
  {
    return null;
  }
}
4

1 に答える 1

0

Blowfish は実際には高速な暗号です。Java の速度が遅い場合でも、数 Mb/秒になるはずです。ほとんどの場合、問題は使用方法にあります (たとえば、8 バイト ブロックでファイルに書き込むなど)。または、BouncyCastle チームがどのようにコーディングされているか。AES-128 を試してください。より高速なはずです。そして、最速のソリューション (そして安全性ははるかに低い) は RC4 です。

于 2013-02-06T11:05:44.843 に答える