在隐写术中访问随机lsb位

时间:2018-02-19 12:21:08

标签: java aes steganography

我试图做音频隐写术。在将数据隐藏在音频内部之前,我用aes对数据进行加密,然后在顺序字节中将位嵌入lsb。恢复和解密工作正常。

但如果我为lsb尝试随机位,它会给我以下错误:

  

- >线程" main"中的异常javax.crypto.BadPaddingException:给定最终块未正确填充

错误指向

public byte[] decr**strong text**yptText(byte[] byteCipherText,Key secKey) throws Exception {
        // AES defaults to AES/ECB/PKCS5Padding in Java 7
        Cipher aesCipher = Cipher.getInstance("AES");
        aesCipher.init(Cipher.DECRYPT_MODE, secKey);
        byte[] bytePlainText = aesCipher.doFinal(byteCipherText);

1 个答案:

答案 0 :(得分:0)

  1. 请参阅PKCS padding,请注意PKCS#5是PKCS#7 WRT AES的用词不当,因为AES实施开发人员懒得包含正确的选项名称。

  2. 因为PKCS#7填充具有格式要求,并且很少有字节序列(~1 ^ 16 + 2 ^ 16 + ... + 15 ^ 16)从256 ^ 16个可能的字节序列中形成正确的填充随机字节形成有效PKCS#7填充的可能性非常小。

  3. 您可能最好使用不需要填充的CTR模式,只需为每次加密设置一个唯一的密钥/计数器对。