问题
I am trying to decrypt data using org.jpos JCEHandler in Android like below code
public static byte[] decrypt(byte[] data, byte[] key, String algorithm) throws JCEHandlerException
{
byte[] plainText;
JCEHandler handler = new JCEHandler("com.sun.crypto.provider.SunJCE");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, algorithm);
plainText = handler.decryptData(data, secretKeySpec);
return plainText;
}
but it catch Exception says Provider SunJCE does not provide DES/ECB/NoPadding
I call this function like below code
byteKey=Hex.decodeHex("abcdef0123456789".toCharArray());
Log.d("aabb","byteKey:"+byteKey);
TMK = Hex.decodeHex("abcdef0123456789".toCharArray());
byteKey = Crypto.decrypt(byteKey,TMK,"DES");
the log of byteKey is : [B@1cbe2358
what should I do , I try a lot to solve it but always same error , can I find some codes do the same result of handler.decryptData in android can I find any help please ...
回答1:
JCEHandler handler = new JCEHandler("com.sun.crypto.provider.SunJCE");
You are enforcing JCE provider to use SunJCE
which may not have the corresponding crypto implementation for DES/ECB/NoPadding
, you can either try other algo or use SpongyCastle as your security provider.
Update: ECB mode is already proved to be weak, you should NOT use ECB mode.
来源:https://stackoverflow.com/questions/54921194/java-security-nosuchalgorithmexception-provider-sunjce-does-not-provide-des-ecb