java.security.NoSuchAlgorithmException: Provider SunJCE does not provide DES/ECB/NoPadding

送分小仙女□ 提交于 2019-12-24 15:07:07

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!