Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相同的代码与Android(kotlin)和AndroidTest的行为不同_Android_Kotlin_Encryption_Rsa - Fatal编程技术网

相同的代码与Android(kotlin)和AndroidTest的行为不同

相同的代码与Android(kotlin)和AndroidTest的行为不同,android,kotlin,encryption,rsa,Android,Kotlin,Encryption,Rsa,我试着从测试和常规android运行中运行以下代码, 以下代码正确运行,并设法从测试运行,但返回与常规运行不同的值: val privateKeyStr1 = "MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDusw1gf0MRuwDgv/3fzfQ2ro01ZYIKcj0qLGjbqNJD60SYaEdoJWqpyVkUq24FOL6HQOqAqZirNmOiABWNDlWV3B3gP/piXRYyFSfIBSHURNuJ2Cc0

我试着从测试和常规android运行中运行以下代码, 以下代码正确运行,并设法从测试运行,但返回与常规运行不同的值:

val privateKeyStr1 = "MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDusw1gf0MRuwDgv/3fzfQ2ro01ZYIKcj0qLGjbqNJD60SYaEdoJWqpyVkUq24FOL6HQOqAqZirNmOiABWNDlWV3B3gP/piXRYyFSfIBSHURNuJ2Cc0yDYEK8v635lPUJN3F9n1DgDW5A719nyVPogqNxB4pBkmO+N50jdtBCXErfF64npcCW3QfNohc80FIeEH2E0FmLatYtkpR1roeITb3OIc61SKZn8Dx3O87q7NRg9/LJA7bBwQE8UBc1/PE1zjZzWChs5r4zwwvhBcRpm+SJ7WsG8Rz+/4aS0WmMNiu22bzYjyvT0Fm2axYmoN0Aw9X9lbLToGCT2F7y41U5YZAgMBAAECggEBAIY3I4RoyluD3MCC88sN0Q2WJEwr4WziQ0YdZnBsgp4yAYX4zH3g3BLP5kjbA6fn+imu9KyXsAJFOMx0Y6nGr5TuCdZ34t/AG6TZhF7Rk+35McBWS+U/1i+OOMm9RET2t5Q1UxaZYxtxbIAcsnxwhrvF7nsHOiTnc8ahzwx7Uok9dw9iuz9q/NBVQtL2ic38G5tCyNyvKHhK/vZDw0DKhAMDJ0c+iZs0iwf08UCMij3DFohgSjb6jAtnzD0Bg5NbUCGijL1qFbOoHrZcF8jfW2IOaJP0O5fIh6V673ewp5RH4gh0TbMOPYzTHgttWLRaADx2DZKYnH+B3jt16y9ebgECgYEA+q4xgH6aA0mLIQA94VOPVQgYDHxeqkAAL6hMsh4oGX3/AZ2GQPM24wNIMn8lm7wzmz2VkHgLUMMYrbT9boeCnaUzIkV14qHB1iCpk9RU7eC23oSHLguYON+5abOPUQMYMsOyIWt5wywaZLZBAeZXjbmwPzYr2MphVnD0LJe0KPkCgYEA88PF0Bkb6RuR0U3UR/KAIESfJDWjqfofhEzmFd6Z6fk8sE9WEJ53KaZEwIPz0kMfn63gEHujIbV3TqzcMxOGjWJWYJLe6H+aeEnjV38SVbKt87aDWM+c2tUIJr1crYrWm7nQv/856Z7r50XJv2XSoq190bBc0thEszvMu/gePiECgYEAgIZJCQlf62mMdKoMD/fol/8jXVtyqbVQox6V3AjMJG3ODcT27VwFexTWslUwMg2nI+PKSBzUKF8uyvjtqvq9RBhMBDk6vKyUljV+3DVUKfY5rBKkwD3fmOFTzdbrFu0QPg7JyIqzDhcRnSs4X0H7B8X5kB81EdyJVWlqN2a8TvkCgYEA1B961fnjpdiN7btyjSFjibDtY48h2tqD7pcUadeJzGdM/ogrds7PF3lOvtCUrlYnAMdIAk/0x3KoXdhizjehkQsP634jZ+MSwrZZlVxI0jZo1Xnvlqsj7fIP49ZI/eOhmWX7V/h7pubalijOxTWQNGwQ3xY/0GLOdcIGCVSCzMECgYEAzFzqTMG8ueWGDbBB6cWG4aJXfV2PHAdGqctuTFiLnzwm7MOHi/vHutFwgyPnjFI6CnfCMgYu2E+AsOG+8uu8bvCX7go8e2xUFbIyCnxpnrpltfoeJUDTAIgPTgMHaeJN05Aba1kHG6+xwx3cBp8sN3bhtHGQBURR8M2kzJIYKMc="
val cipherText = "TWN1xaX+rjcdQ2vgnbMdv/y7VPMj35qvHgm1U1HeYK6X1pTJCHq4PSLaJUtndZmIIUxWvaU/hKimX0MbFfgKM3JZYGV8jsNv3bp/7HBAfs1CPz7UqjrwRF3h8FiN7EUYEB9D89JMqVp9/WgOXOu/NLGhNNS3ESYAA8bFyXDgDBpJVzPX/Qilv/OIp7T/nGPO4lXIAFsQtpf5A8R8N/sSssB3urZLkm9zTc2fyWZMUH6AD08+/UYtVp41Tf3bp6qIZZvrtfo44HWgOmPBxx+WGq0PVUVMDkXsmoIPQtUFRObfwTS8r0+reBDKAVfJgtxZRGqXbmsAK9KA4MlAoe67lA=="
val kf = KeyFactory.getInstance("RSA")
val decoded = Base64.getDecoder().decode(privateKeyStr1)
val privateKey = kf.generatePrivate(PKCS8EncodedKeySpec(decoded))
val cipher: Cipher = Cipher.getInstance("RSA")
cipher.init(Cipher.DECRYPT_MODE, privateKey)
val plainText = String(cipher.doFinal(Base64.getDecoder().decode(cipherText)))
print(plainText)
从测试返回: “你好”(如预期)

从android返回:
�5J�o���5ټ���{���,A | R��2.��古普(t)��g3��B�>�|O�� 解决方案是按如下方式初始化密码实例:

val cipher: Cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding")

似乎尚未删除填充。可能规范
RSA
会返回不同的默认值。请使用
RSA/ECB/PKCS1PANDING
RSA/NONE/PKCS1PANDING
尝试完整规范,而不是
Cipher.getInstance(…)
。我试过这样做,但我遇到了某种错误:java.security.nosuchagorithmexception:RSA/NONE/PKCS1Padding KeyFactory不可用和java.security.nosuchagorithmexception:RSA/ECB/PKCS1Padding KeyFactory不可用。你知道为什么代码的行为与测试和测试不同吗?试试关于
密码的更改ode>和not
KeyFactory