小编haw*_*awx的帖子

在android中使用AES CTR模式随机访问InputStream

我找不到用于随机访问的 AES CTR 加密的任何工作示例。有人可以指导我如何在 CTR MODE 中使用计数器以及如何实现跳转到流中的特定位置吗?

默认流实现 ( CipherInputStream) 不会跳过流并且会破坏纯文本。

我正在尝试解密存储在 Android sdcard 上的加密视频文件。嵌入式 HTTP 文件服务器会动态解密它。一切正常,直到用户在视频中执行搜索:视频立即停止,因为它收到损坏的视频流。

我正在使用以下代码来初始化和加密/解密流(为了简单起见,我对密钥进行了硬编码。它不会在生产中进行硬编码)

    ByteBuffer bb = ByteBuffer.allocate(16);
    bb.put("1234567891230000".getBytes());
    byte[] ivString = bb.array();

    // INITIALISATION
    String keyString = "1234567812345678";
    IvParameterSpec iv = new IvParameterSpec(ivString);
    SecretKeySpec keySpec = new SecretKeySpec(keyString.getBytes(), "AES");

    // FOR ENCRYPTION
    Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(ivString));
    Inputstream encrypted_is = new CipherInputStream(in, cipher);

    // FOR DECRYPTION
    cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(ivString));
            Inputstream decrypted_is = new CipherInputStream(in, cipher);
Run Code Online (Sandbox Code Playgroud)

java encryption android cryptography

6
推荐指数
1
解决办法
3218
查看次数

标签 统计

android ×1

cryptography ×1

encryption ×1

java ×1