【发布时间】:2018-06-09 02:43:31
【问题描述】:
我正在尝试使用此处的代码进行加密 https://commons.apache.org/proper/commons-crypto/xref-test/org/apache/commons/crypto/examples/CipherByteArrayExample.html。我逐字复制了代码,但我不确定为什么会出现这个异常,因为我在这个问题上找不到太多。我唯一更改的部分是“StandardCharsets.UTF_8”到字符串“UTF-8”。我也对使用 Bouncy Castle 或 java JCE 作为替代方案不感兴趣,但我对在 CBC/ECB 模式下使用 AES/DES 的其他库持开放态度(我知道 DES/ECB 的危险,因此不需要讲座)。谢谢。
编辑:
堆栈跟踪(注意 Crypto.java 的第 62 行是“CryptoCipher encipher=Utils.getCipherInstance(transform, properties) ):
W/System.err: java.io.IOException: java.security.GeneralSecurityException: CryptoCipher {org.apache.commons.crypto.cipher.OpenSslCipher} is not available or transformation AES/CBC/PKCS5Padding is not supported.
at org.apache.commons.crypto.utils.Utils.getCipherInstance(Utils.java:130)
at com.example.me.cryptotest.Crypto.test(Crypto.java:62)
at com.example.me.cryptotest.MainActivity.onCreate(MainActivity.java:43)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
W/System.err:
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.security.GeneralSecurityException: CryptoCipher {org.apache.commons.crypto.cipher.OpenSslCipher} is not available or transformation AES/CBC/PKCS5Padding is not supported.
at org.apache.commons.crypto.cipher.CryptoCipherFactory.getCryptoCipher(CryptoCipherFactory.java:176)
at org.apache.commons.crypto.utils.Utils.getCipherInstance(Utils.java:128)
... 15 more
W/System.err: Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.apache.commons.crypto.utils.ReflectionUtils.newInstance(ReflectionUtils.java:90)
at org.apache.commons.crypto.cipher.CryptoCipherFactory.getCryptoCipher(CryptoCipherFactory.java:160)
... 16 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
W/System.err:
at org.apache.commons.crypto.utils.ReflectionUtils.newInstance(ReflectionUtils.java:88)
... 17 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: no native library is found for os.name=Linux and os.arch=x86
at org.apache.commons.crypto.cipher.OpenSslCipher.<init>(OpenSslCipher.java:59)
... 20 more
Caused by: java.lang.RuntimeException: no native library is found for os.name=Linux and os.arch=x86
at org.apache.commons.crypto.NativeCodeLoader.findNativeLibrary(NativeCodeLoader.java:120)
at org.apache.commons.crypto.NativeCodeLoader.loadLibrary(NativeCodeLoader.java:62)
at org.apache.commons.crypto.NativeCodeLoader.<clinit>(NativeCodeLoader.java:50)
at org.apache.commons.crypto.NativeCodeLoader.isNativeCodeLoaded(NativeCodeLoader.java:261)
at org.apache.commons.crypto.Crypto.isNativeCodeLoaded(Crypto.java:84)
W/System.err: at org.apache.commons.crypto.cipher.OpenSsl.<clinit>(OpenSsl.java:94)
at org.apache.commons.crypto.cipher.OpenSsl.getLoadingFailureReason(OpenSsl.java:114)
at org.apache.commons.crypto.cipher.OpenSslCipher.<init>(OpenSslCipher.java:57)
... 20 more
【问题讨论】:
-
你有异常堆栈跟踪要分享吗?请注意,我在本地运行了相同的代码,它就像一个魅力。
-
@AmithKumar 嗯,这很有趣。是的,它就在这里。
标签: java apache encryption cryptography