java.security.NoSuchAlgorithmException:提供者SunJCE不提供DES / ECB / NoPadding

时间:2019-02-28 08:21:47

标签: java android encryption jpos

我正在尝试使用Android中的org.jpos JCEHandler解密数据,如下面的代码

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;
}

但是它捕获到异常异常表明提供程序SunJCE不提供DES/ECB/NoPadding

我将此函数称为以下代码

byteKey=Hex.decodeHex("abcdef0123456789".toCharArray());
Log.d("aabb","byteKey:"+byteKey);
TMK = Hex.decodeHex("abcdef0123456789".toCharArray());
byteKey = Crypto.decrypt(byteKey,TMK,"DES");

byteKey的日志为:[B@1cbe2358

我该怎么办,我尝试了很多方法来解决,但始终是相同的错误,我可以在Android中找到一些代码执行与 handler.decryptData 相同的结果吗?

1 个答案:

答案 0 :(得分:0)

JCEHandler handler = new JCEHandler("com.sun.crypto.provider.SunJCE");

您正在强制JCE提供程序使用SunJCE,而DES/ECB/NoPadding可能没有相应的加密实现,您可以尝试其他算法,也可以使用SpongyCastle作为安全提供程序。

更新: ECB 模式已被证明是弱点,您不应使用ECB 模式。