BouncyCastle AES error when upgrading to 1.45

后端 未结 3 1883
耶瑟儿~
耶瑟儿~ 2020-12-05 21:34

Recently upgraded from BC 1.34 to 1.45. I\'m decoding some previously-encoded data with the following:

    SecretKeySpec skeySpec = new SecretKeySpec(raw, \"         


        
相关标签:
3条回答
  • 2020-12-05 22:28

    Looks like the problem is SecureRandom not being portable across the Froyo-Gingerbread boundary. This post describes a similar problem:

    http://groups.google.com/group/android-security-discuss/browse_thread/thread/6ec015a33784b925

    I am not sure what exactly changed in SecureRandom, but the only way I found to fix it was to reencrypt the data with keys generated using a portable method.

    0 讨论(0)
  • 2020-12-05 22:30

    According to the release notes, this fix was included in version 1.40:

    PKCS7Padding validation would not fail if pad length was 0. This has been fixed.

    This sounds like it may be pertinent.

    0 讨论(0)
  • 2020-12-05 22:41

    I just finished tracking this down. It's because of a bug fix on line 320 (in Gingerbread source) of SHA1PRNG_SecureRandomImpl.java in the engineNextBytes() method where

    bits = seedLength << 3 + 64;
    

    was changed to

    bits = (seedLength << 3) + 64;
    

    Clearly it was a bug that was fixed, but it means that given the same seed, SecureRandom will generate different data pre- and post-gingerbread.

    I have a "fix" for it. I stole enough code from android-7 to be able to generate random bytes in the same way that SecureRandom did. I try to decrypt my information and if it fails, use my jacked up SecureRandom to decrypt it. Then I can obviously reencrypt it using the newer SecureRandom, although I'm kind of thinking of moving away from SecureRandom entirely...

    0 讨论(0)
提交回复
热议问题