1
我想加密红宝石中的字符串和Android中的解密。我对加密很不熟悉,但是我已经做了一些阅读,我想我已经接近工作了。然而,我仍然遇到了Android方面的错误,我只是不明白如何解决。我知道填充是什么,它是不正确的,但我需要改变以做出这项工作?下面是我的ruby和java代码。谢谢!!!红宝石到Android 3DES加密 - 垫块损坏
红宝石:
shared_key = "123456789"
cipher = OpenSSL::Cipher::Cipher.new("des3")
cipher.encrypt
cipher.key = shared_key
ciphertext = cipher.update(secret)
ciphertext << cipher.final
Rails.logger.debug(ciphertext);
encrypted_secret = Base64.encode64(ciphertext)
Rails.logger.debug(encrypted_secret);
render json: { 'token' => token, 'secret' => encrypted_secret }, status: :ok
的Java:
SecretKey key = new SecretKeySpec(SHARED_DECRYPTION_KEY.getBytes("UTF8"), "DESede");
byte[] encryptedSecretBytes = Base64.decode(secret);
Cipher cipher = Cipher.getInstance("DESede"); // cipher is not thread safe
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] plainTextSecretBytes = (cipher.doFinal(encryptedSecretBytes));
String decryptedSecret = Base64.encodeBytes(plainTextSecretBytes);
和例外,我在Android中得到:
05-14 19:03:11.500: W/System.err(22175): javax.crypto.BadPaddingException: pad block corrupted
05-14 19:03:11.500: W/System.err(22175): at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:709)
05-14 19:03:11.500: W/System.err(22175): at javax.crypto.Cipher.doFinal(Cipher.java:1111)
05-14 19:03:11.500: W/System.err(22175): at com.cdlcollege.saas.Credentials.storeServerAccessCredentials(Credentials.java:85)
好有趣我会检查这些,看看它让我。感谢指针。 – deepwinter
感谢您的帮助,它绝对让我走上正轨。我也发现这个问题:http://stackoverflow.com/questions/11266556/encrypt-in-ruby-and-decrypt-in-java-why-is-it-not-working接近重复,并包含一些帮助我使用AES加密的代码。 – deepwinter
@deepwinter问题的根源是什么? –