Java Sun JCE和BouncyCastle Android不兼容加密?

Java Sun JCE和BouncyCastle Android不兼容加密?,java,android,encryption,cryptography,bouncycastle,Java,Android,Encryption,Cryptography,Bouncycastle,我正在将一个加密的工作应用程序移植到Android上。RSA加密在一个平台内工作——Android版本可以解密Android应用程序上加密的内容。但在Java应用程序上加密的数据无法在Android上解密 给定相同的输入-相同的私钥模数和指数,以及相同的256字节输入块,我使用javax.crypto.Cipher得到不同的结果,就像在 public java.security.PrivateKey m_privateKey; public byte[] Decrypt(byte[] inpu

我正在将一个加密的工作应用程序移植到Android上。RSA加密在一个平台内工作——Android版本可以解密Android应用程序上加密的内容。但在Java应用程序上加密的数据无法在Android上解密

给定相同的输入-相同的私钥模数和指数,以及相同的256字节输入块,我使用javax.crypto.Cipher得到不同的结果,就像在

public java.security.PrivateKey m_privateKey;

public byte[] Decrypt(byte[] input)
{
    Cipher cipher;
    byte[] cipherData = null;
    cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.DECRYPT_MODE, m_privateKey);
    cipherData = cipher.doFinal(input);
    return cipherData;
}
在我看来,这是一个供应商问题;调试器报告Android的密码提供程序是com.Android.org.bouncycastle.jce.provider.BouncyCastleProvider,BC版本1.49,而应用程序密码提供程序是SunJCE版本1.7

按键的形状也略有不同;它们的privateExponent和module匹配正确,但在应用程序中,m_privateKey被实例化为Sun RSA私钥,2048位。在Android上,它是com.Android.org.conscrypt.opensslrsaprivaratekey,尽管有上述声明

我有点不知所措。应用程序代码可以在Linux、Mac和Windows机器上工作,在客户端和服务器环境中都可以,所以我没有太多的灵活性来切换它。有没有关于检查什么以使Android的java/crypto兼容的想法

编辑以提供owlstead请求的内容

对于这两种情况,我都使用了:

byte[] encodedPublic = rsaencUserKeys.m_publicKey.getEncoded();
byte[] encodedPrivate = rsaencUserKeys.m_privateKey.getEncoded();
byte[] testDataIn = new byte[]{25, 99, 76, 84, 7, 104, 27, 47, 120, 86, 83, 9, 56, 77, 0};
byte[] cryptoTest = rsaencUserKeys.Encrypt(testDataIn);
byte[] plainTest = rsaencUserKeys.Decrypt(cryptoTest);
应用程序Java值: 编码公钥: [48, -126, 1, 34, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, 48, -126, 1, 10, 2, -126, 1, 1, 0, -88, -3, 17, -56, -93, -54, -29, 50, 23, -33, 20, -23, 107, 83, 5, 92, -52, -102, 119, 63, 106, -77, -84, -119, -39, -54, -37, -13, -57, -54, 127, -24, -121, 95, -120, 121, -3, 56, -125, -31, 56, 52, 91, 59, 64, 28, -33, 120, -12, -89, 86, -32, 111, 48, -1, -121, 23, 101, -122, -126, 26, -112, 82, 80, -126, -126, 59, -123, -107, -51, -85, 108, 100, -95, 123, 115, -3, -98, -44, -84, -39, -8, -110, -24, -20, -108, -49, 44, -13, -51, -92, 52, -30, -27, -75, 38, 105, -68, -28, 84, 113, 101, -3, -127, -56, 39, 121, 0, 50, 95, -94, -31, -46, 97, 84, 22, -38, 53, 34, -28, -79, 18, -110, 13, 63, -49, 13, 18, 49, 0, -120, 100, 91, -33, -50, -116, 69, 88, 112, 34, 115, -98, 67, 35, 55, 59, 54, 97, -6, -67, 10, -92, 110, -86, -24, 120, -81, 33, 105, -57, 67, -73, -24, -85, -118, 118, -69, -16, 11, 32, -32, 65, 123, 64, -90, -68, -40, -56, 96, 23, -14, 21, -49, -27, 108, 2, -8, -76, 15, 38, 34, -3, 64, 89, 117, -67, 125、-78、-79、-44、47、103、81、117、-13、-1、-96、-115、37、-110、-36、-78、80、-74、24、34、-15、-5、-117、39、49、28、70、75、4、-48、-49、3、-14、36、0、-4、-111、-60、96、-105、-2、-76、101、-105、-60、66、121、33、-72、8、31、-3、-31、52、121、-90、-73、2、3、1、0、1]

编码私钥: [48, -126, 2, 56, 2, 1, 0, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 4, -126, 2, 34, 48, -126, 2, 30, 2, 1, 0, 2, -126, 1, 1, 0, -88, -3, 17, -56, -93, -54, -29, 50, 23, -33, 20, -23, 107, 83, 5, 92, -52, -102, 119, 63, 106, -77, -84, -119, -39, -54, -37, -13, -57, -54, 127, -24, -121, 95, -120, 121, -3, 56, -125, -31, 56, 52, 91, 59, 64, 28, -33, 120, -12, -89, 86, -32, 111, 48, -1, -121, 23, 101, -122, -126, 26, -112, 82, 80, -126, -126, 59, -123, -107, -51, -85, 108, 100, -95, 123, 115, -3, -98, -44, -84, -39, -8, -110, -24, -20, -108, -49, 44, -13, -51, -92, 52, -30, -27, -75, 38, 105, -68, -28, 84, 113, 101, -3, -127, -56, 39, 121, 0, 50, 95, -94, -31, -46, 97, 84, 22, -38, 53, 34, -28, -79, 18, -110, 13, 63, -49, 13, 18, 49, 0, -120, 100, 91, -33, -50, -116, 69, 88, 112, 34, 115, -98, 67, 35, 55, 59, 54, 97, -6, -67, 10, -92, 110, -86, -24, 120, -81, 33, 105, -57, 67, -73, -24, -85, -118, 118, -69, -16, 11, 32, -32, 65, 123, 64, -90, -68, -40, -56, 96, 23, -14, 21, -49, -27, 108, 2, -8, -76, 15, 38, 34, -3, 64, 89, 117, -67, 125, -78, -79, -44, 47, 103, 81, 117, -13, -1, -96, -115, 37, -110, -36, -78, 80, -74, 24, 34, -15, -5, -31, -5, -117, 39, 49, 28, 70, 75, 4, -48, -49, 3, -14, 36, 0, -4, -111, -60, 96, -105, -2, -76, 101, -107, -105, -60, 66, 121, 33, -72, 8, 31, -3, -31, 52, 121, -90, -73, 2, 1, 0, 2, -126, 1, 0, 96, 69, -116, 84, 25, -68, 4, 35, 13, -90, 113, 107, 105, 81, 42, -60, -21, 107, 52, 116, 84, 125, 119, -42, 48, -43, 120, -23, 48, -15, 20, 93, -116, -127, -56, 102, 118, -12, 51, 109, -93, 111, 112, 106, 24, -28, 90, 11, -74, -107, 126, -48, -19, -121, -92, -117, 121, -80, -59, 40, 105, -87, -66, -69, 79, 30, -110, 122, 80, 21, -109, -117, 116, -24, -22, 67, -14, 65, 2, 56, 87, 21, 93, -36, -124, -85, 98, 59, -31, -55, 77, -69, 51, 104, 90, 3, 64, 73, -12, 106, -121, 15, -21, -108, 124, 74, -64, -116, 116, 38, 55, -51, 30, -27, -125, -38, 97, 5, -44, -109, 36, -83, -57, -74, -12, -101, 40, 126, 62, -81, -10, -61, -8, -113, -41, 17, -3, 84, 83, 94, 36, 3, 16, 8, -76, 74, 116, 85, 114, 30, 86, -51, 126, 122, 80, 52, 100, -41, -105, -20, 67, -128, -23, -26, -68, 118, 56, -35, 81, -15, -34, -32, 93, -88, 75, 92, 126, -1, 27, -117, 122 , -81, -114, -32, -13, 94, -92, 121, 85, 39, 67, 42, -86, 95, 5, -19, 58, 127, -4, -34, 12, 35, 26, 6, 88, 112, -121, 24, -96, 96, 119, 119, -99, -72, -13, 6, 48, -78, -88, 106, 88, -13, -29, 9, 108, 124, 22, -110, 79, 83, -16, 108, -17, -88, 59, 19, -124, -75, 47, -71, 31, -35, 35, 54, 68, 43, -60, -36, 72, 52, 122, 119, 4, 101, -117, -127, 2, 1,[0,2,1,0,2,1,0,2,1,0,2,1,0]

水晶测试: [73, 116, -22, -83, -50, -107, 21, -119, -110, -63, 3, 48, 23, 3, -117, 66, -7, -114, -109, 52, 29, -97, -92, 23, 29, -48, 93, -119, -124, -111, -98, 54, 113, 46, -18, 39, -56, 1, -89, 70, -100, 78, -87, 98, -3, 6, 0, 79, 43, -127, 53, -75, -36, -104, -94, -86, 32, 38, -29, -98, 74, -124, 6, -42, 23, -7, -4, -90, 104, 55, -37, -26, -99, -119, 5, 13, -73, 6, 48, 58, -72, 95, -43, -76, -65, -35, 14, 113, 75, -55, 50, 5, 93, 96, 127, 48, -71, 70, 89, -52, -116, -21, 57, -13, -83, -81, -43, 99, 7, -38, 1, 3, -124, 55, 59, 54, -91, 85, -28, 92, 56, 109, -12, -44, 62, -13, -18, -59, 120, -113, -35, -86, -81, -65, -16, -29, -119, -120, 121, -20, -8, -6, 99, 46, 106, 11, 94, 51, 49, 105, -5, 104, -2, -65, -66, -100, -50, -124, 80, 59, -22, 62, 77, 106, 46, -14, 60, -11, 36, -119, 2, -74, -55, 1, 91, -63, -96, -113, -102, 53, -5, 33, 23, 82, 13, 77, 63, 84, -21, -37, 14, -1, 1, -5, -126, 66, 36, 74, -46, -76, -9, -76, 119, -116, 55, -50, -118, -6, -36, -32, -29, -57, -52, 8, 116, 39, -3, 47, -93, -1, -63, 105, 39, -3, -18, -109, -26, 94, 126, -16, -12, -24, 59, 37, -107, -92, -68, 35, -45, 116, -27, -33, -101, -85, -67, -67, 117, 59, -37, 49, -9, -4, -63, 63, 11, 89] 普通测试: [25,99,76,84,7104,27,47,120,86,83,9,56,77,0]

Android价值观: 编码公众: [48, -126, 2, 33, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 2, 14, 0, 48, -126, 2, 9, 2, -126, 1, 1, 0, -88, -3, 17, -56, -93, -54, -29, 50, 23, -33, 20, -23, 107, 83, 5, 92, -52, -102, 119, 63, 106, -77, -84, -119, -39, -54, -37, -13, -57, -54, 127, -24, -121, 95, -120, 121, -3, 56, -125, -31, 56, 52, 91, 59, 64, 28, -33, 120, -12, -89, 86, -32, 111, 48, -1, -121, 23, 101, -122, -126, 26, -112, 82, 80, -126, -126, 59, -123, -107, -51, -85, 108, 100, -95, 123, 115, -3, -98, -44, -84, -39, -8, -110, -24, -20, -108, -49, 44, -13, -51, -92, 52, -30, -27, -75, 38, 105, -68, -28, 84, 113, 101, -3, -127, -56, 39, 121, 0, 50, 95, -94, -31, -46, 97, 84, 22, -38, 53, 34, -28, -79, 18, -110, 13, 63, -49, 13, 18, 49, 0, -120, 100, 91, -33, -50, -116, 69, 88, 112, 34, 115, -98, 67, 35, 55, 59, 54, 97, -6, -67, 10, -92, 110, -86, -24, 120, -81, 33, 105, -57, 67, -73, -24, -85, -118, 118, -69, -16, 11, 32, -32, 65, 123, 64, -90, -68, -40, -56, 96, 23, -14, 21, -49, -27, 108, 2, -8, -76, 15, 38, 34, -3, 64, 89, 117, -67, 125, -78, -79, -44, 47, 103, 81, 117, -13, -1, -96, -115, 37, -110, -36, -78, 80, -74, 24, 34, -15, -5, -31, -5, -117, 39, 49, 28, 70, 75, 4, -48, -49, 3, -14, 36, 0, -4, -111, -60, 96, -105, -2, -76, 101, -107, -105, -60, 66, 121, 33, -72, 8, 31, -3, -31, 52, 121, -90, -73, 2, -126, 1, 0, 96, 69, -116, 84, 25, -68, 4, 35, 13, -90, 113, 107, 105, 81, 42, -60, -21, 107, 52, 116, 84, 125, 119, -42, 48, -43, 120, -23, 48, -15, 20, 93, -116, -127, -56, 102, 118, -12, 51, 109, -93, 111, 112, 106, 24, -28, 90, 11, -74, -107, 126, -48, -19, -121, -92, -117, 121, -80, -59, 40, 105, -87, -66, -69, 79, 30, -110, 122, 80, 21, -109, -117, 116, -24, -22, 67, -14, 65, 2, 56, 87, 21, 93, -36, -124, -85, 98, 59, -31, -55, 77, -69, 51, 104, 90, 3, 64, 73, -12, 106, -121, 15, -21, -108, 124, 74, -64, -116, 116, 38, 55, -51, 30, -27, -125, -38, 97, 5, -44, -109, 36, -83, -57, -74, -12, -101, 40, 126, 62, -81, -10, -61, -8, -113, -41, 17, -3, 84, 83, 94, 36, 3, 16, 8, -76, 74, 116, 85, 114, 30, 86, -51, 126, 122, 80, 52, 100, -41, -105, -20, 67, -128, -23, -26, -68, 118, 56, -35, 81, -15, -34, -32, 93, -88, 75, 92, 126, -1, 27, -117, 122, -81, -114, -32, -13, 94, -92, 121, 85, 39, 67, 42, -86, 95, 5, -19, 58, 127, -4, -34, 12, 35, 26, 6, 88, 112, -121, 24, -96, 96, 119, 119, -99, -72, -13, 6, 48, -78, -88, 106, 88, -13, -29, 9, 108, 124, 22, -110, 79, 83, -16, 108, -17, -88, 59, 19, -124, -75, 47、-71、31、-35、35、54、68、43、-60、-36、72、52、122、119、4101、-117、-127]

编码私有: [48, -126, 2, 38, 2, 1, 0, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 4, -126, 2, 16, 48, -126, 2, 12, 2, 1, 0, 2, -126, 1, 1, 0, -88, -3, 17, -56, -93, -54, -29, 50, 23, -33, 20, -23, 107, 83, 5, 92, -52, -102, 119, 63, 106, -77, -84, -119, -39, -54, -37, -13, -57, -54, 127, -24, -121, 95, -120, 121, -3, 56, -125, -31, 56, 52, 91, 59, 64, 28, -33, 120, -12, -89, 86, -32, 111, 48, -1, -121, 23, 101, -122, -126, 26, -112, 82, 80, -126, -126, 59, -123, -107, -51, -85, 108, 100, -95, 123, 115, -3, -98, -44, -84, -39, -8, -110, -24, -20, -108, -49, 44, -13, -51, -92, 52, -30, -27, -75, 38, 105, -68, -28, 84, 113, 101, -3, -127, -56, 39, 121, 0, 50, 95, -94, -31, -46, 97, 84, 22, -38, 53, 34, -28, -79, 18, -110, 13, 63, -49, 13, 18, 49, 0, -120, 100, 91, -33, -50, -116, 69, 88, 112, 34, 115, -98, 67, 35, 55, 59, 54, 97, -6, -67, 10, -92, 110, -86, -24, 120, -81, 33, 105, -57, 67, -73, -24, -85, -118, 118, -69, -16, 11, 32, -32, 65, 123, 64, -90, -68, -40, -56, 96, 23, -14, 21, -49, -27, 108, 2, -8, -76, 15, 38, 34, -3, 64, 89, 117, -67, 125, -78, -79, -44, 47, 103, 81, 117, -13, -1, -96, -115, 37, -110, -36, -78, 80, -74, 24, 34, -15, -5, -31, -5, -117, 39, 49, 28, 70, 75, 4, -48, -49, 3, -14, 36, 0, -4, -111, -60, 96, -105, -2, -76, 101, -107, -105, -60, 66, 121, 33, -72, 8, 31, -3, -31, 52, 121, -90, -73, 2, -126, 1, 0, 96, 69, -116, 84, 25, -68, 4, 35, 13, -90, 113, 107, 105, 81, 42, -60, -21, 107, 52, 116, 84, 125, 119, -42, 48, -43, 120, -23, 48, -15, 20, 93, -116, -127, -56, 102, 118, -12, 51, 109, -93, 111, 112, 106, 24, -28, 90, 11, -74, -107, 126, -48, -19, -121, -92, -117, 121, -80, -59, 40, 105, -87, -66, -69, 79, 30, -110, 122, 80, 21, -109, -117, 116, -24, -22, 67, -14, 65, 2, 56, 87, 21, 93, -36, -124, -85, 98, 59, -31, -55, 77, -69, 51, 104, 90, 3, 64, 73, -12, 106, -121, 15, -21, -108, 124, 74, -64, -116, 116, 38, 55, -51, 30, -27, -125, -38, 97, 5, -44, -109, 36, -83, -57, -74, -12, -101, 40, 126, 62, -81, -10, -61, -8, -113, -41, 17, -3, 84, 83, 94, 36, 3, 16, 8, -76, 74, 116, 85, 114, 30, 86, -51, 126, 122, 80, 52, 100, -41, -105, -20, 67, -128, -23, -26, -68, 118, 56, -35, 81, -15, -34, -32, 93, -88, 75, 92, 126, -1, 27, -117, 122, -81, -114, -32, -13, 94, -92, 121, 85, 39, 67, 42, -86, 95, 5, -19, 58, 127, -4, -34, 12, 35, 26, 6, 88, 112, -121, 24, -96, 96, 119, 119, -99, -72, -13, 6, 48, -78, -88, 106, 88, -13, -29, 9, 108, 124, 22, -110, 79, 83, -16, 108, -17, -88, 59, 19, -124, -75, 47, -71, 31, -35, 35, 54, 68, 43,-60、-36、72、52、122、119、4101、-117、-127]

加密测试: [114, 116, 59, -51, -71, 99, 66, -34, 13, -31, 119, 8, -80, 107, 78, -67, 96, -122, -66, 122, 41, -114, -29, 105, -60, -38, 114, 101, -90, 5, 115, 96, -66, 4, 41, -48, 7, -77, -9, 47, -9, -2, -122, -60, -76, -58, -56, -116, 122, -7, -68, -4, 88, -77, 47, -109, -46, 44, -51, 57, 73, -21, -64, 10, 57, 64, -80, -85, 107, 21, 62, 42, -74, 49, -95, -37, 24, 38, 107, 83, 86, 70, -108, -82, -18, -77, -53, -128, 9, -32, 112, -122, 114, 24, 107, 89, -4, -43, 117, -97, -52, 95, 35, -1, -70, 57, 109, 64, 27, 51, -80, 63, -91, 6, 108, -10, -104, 111, 7, -80, 42, -3, 26, 92, 11, -1, 77, 19, 22, 66, 103, 119, 61, 8, -7, -83, 107, 0, 44, 60, -93, 22, -125, 87, -107, 90, -112, -16, 89, 83, 96, -78, -13, 15, 27, 95, 100, -122, 48, 63, -127, 2, -128, 124, -90, -52, -98, -78, -43, -112, -122, -20, -95, 1, 97, -51, -31, 17, -110, 114, 123, 116, -76, -118, 90, -93, -70, 68, 51, -114, 15, -49, 127, 85, 55, -14, -14, 76, 85, 37, -44, -72, 0, 114, 87, -87, -6, 33, 37, 4, -32, 117, 29, 47, 118, -42, 119, -99, 64, 62, -30, 98, -37, 23, -59, 84, -9, -120, -31、99、-14、-85、-21、-100、120、18、-15、83、96、123、-114、16、34、24、-78、-38、-126、-13111、-43112、-126、-115、1、-53、-32]

普通试验:
[23, -76, -95, 117, 34, -100, 103, -120, -78, 111, -95, -9, 60, -110, 103, 81, -87, 43, 15, 84, -43, -31, -31, 24, -9, 53, 98, 120, -2, 46, -3, 78, 62, -112, -100, 104, -33, 60, 127, -128, -85, 24, -42, 47, -112, 88, -88, 64, -122, 29, -99, 13, -90, -27, -41, 87, 39, 28, 70, -89, -92, 76, 99, -116, -122, 85, -86, 8, 13, 2, 61, 6, -106, 66, -14, -100, -117, -26, -95, -106, 97, 40, -64, -62, 88, 35, -50, 121, 1, 10, 40, 106, -80, -37, -72, 69, -17, 81, 74, -48, -120, 28, -58, 76, 59, 126, -113, 126, -117, -51, -34, 120, -67, -17, -28, 86, -80, 40, 96, -15, -117, -123, 126, -3, 9, 67, -16, 84, 98, -75, 41, 79, 118, 1, 38, 6, 79, 88, -8, -82, -104, 87, -42, 16, 64, 77, -84, 117, -95, 61, -33, 66, -117, -20, -95, 105, -59, 97, -35, -102, 110, 56, -52, -3, 75, 57, -95, 37, -115, 95, -78, -108, -106, 97, 16, 22, -90, 114, -8, 4, -97, -6, 97, 123, 96, -58, -46, -46, 44, 27, 24, -52, -63, 21, -92, -40, -41, -92, 103, -24, -58, 47, -96, -14, -100, -50, 121, 18, 86, 26, 42, 102, 5, -53, -65, 64, 111, -78, 117, -103, -24, 36, 95, -54, 69, -124,-112,99,-62,-113,-58,-5,-93,80,24,76,121,-41,31,-61,47,0,-114,12,-7,-6,-112,19,-124,-41,-88,-6,-41,57,78,-56]

您能否创建一个密钥对,发布公钥/私钥对,例如对密钥执行getEncoded,然后转换为十六进制或base 64以及生成的密文?我可以猜出是什么问题,但这需要设置我的Android环境来验证它,否则可能SunJCE和BC默认为不同的填充?我不确定情况是否如此,但无论如何,它值得明确说明。SunJCE默认为RSA/ECB/PKCS1Padding,但RSA/ECB/OAEPTHHA-256和MGF1PADDING会更安全。@ntoskrnl是的,这就是我要暗示的。不过最近,我发表了这样一个评论,然后提问者开始研究它并自己发布解决方案。我现在11岁了,据我所知答案没有任何分数,这开始让人发痒。Owlstead,我已经添加了您需要的数据
乌斯特德。我可以看到使用getEncoded时公钥和私钥不匹配,但考虑到它们的指数和模匹配,我不清楚为什么会匹配;SunJCE和BouncyCastle密钥之间可能有不同的负担?尽管CRT字段设置为0,但Sun私钥编码看起来像是正确的PKCS8密钥。Android私钥编码看起来像是对PKCS8的半途而废的错误尝试。它一开始是正确的,然后在模之后立即阻塞私有指数,然后完成。所以我想知道你是如何将密钥从Android和Java代码中传输过来的。我不得不说Android的东西看起来有问题,尽管我很想看看getFormat在Android上会返回什么。