gpt4 book ai didi

java - ruby 到 android 3DES 加密 - 填充 block 损坏

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:52 25 4
gpt4 key购买 nike

我正在尝试在 ruby​​ 中加密字符串并在 Android 中解密。我对密码很不熟悉,但我读了一些书,我想我已经接近开始工作了。但是,我仍然在 Android 端遇到错误,我只是不知道如何修复。我了解填充是什么,但它是不正确的,但是我需要更改什么才能使其正常工作?我的 ruby​​ 和 java 代码如下。谢谢!!!

ruby :

shared_key = "123456789012345678901234"      
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)

最佳答案

填充 block 损坏意味着使用了错误的 key 来解密或数据在加密和解密之间被更改。

如果我不得不猜测,我怀疑您以错误的方式创建了 key 。我猜您应该进行十六进制转换,而不是调用 getBytes()

参见Convert hex string to byte []例如用于执行此任务的 Android 代码。

<小时/>

旁注:不要只为密码指定“DESede”。还要指定模式和填充。例如。 “DESede/CBC/PKCS5Padding”。这可确保您准确地获得所需的内容,而不是加密货币提供商的默认设置(这可能因手机而异)。

关于java - ruby 到 android 3DES 加密 - 填充 block 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23668299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com