2
我正在研究有关加密的Android应用程序。而下面的代码用于生成GCM键:服务器如何从android应用程序获取对称密钥?
KeyGenerator generator=KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
generator.init(
new KeyGenParameterSpec.Builder("myfirstkey!",
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setRandomizedEncryptionRequired(false)//use my own iv. I'll change it.
.setKeySize(128)
.build());
generator.generateKey();
,我打算这个关键首先发送到我的服务器,这样我可以测试GCM是否工作。所以,我用这个代码拿到钥匙:
byte[] bkey=sKey.getEncoded();
当然,我失败了,我得到一个错误:
java.lang.NullPointerException: Attempt to read from null array.
根据这样一个问题:Calling .getEncoded() on SecretKey returns null 这是因为密钥库应该是唯一的一个知道这个关键。但我真的很困惑:我的服务器需要这个密钥来解密来自Android应用程序的文件。但我无法从KeyStore获得密钥!有没有办法将密钥发送到服务器?