问题描述:
在Android设备上,我使用了KeyStore进行生密钥,
KeyGenParameterSpec .setKeySize(1024),在很多机型上都是没有问题的,
但客户反应在**魅族M5**使用我方产品时候,进行不能通过,
查询后台日志信息,是公钥过长,超出了SQL的字段长度.
明明我给定的是1024长度啊,为什么会生出2048的密钥呢?
代码模块:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null, null);
//生密钥对
//用keyName+keyPwd 作为秘钥别名,因为6.0的设备,无法设置密码,通过此方法,调用的时候可以验证密码是否正确
KeyPairGenerator kpg = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder(encKeyName, KeyProperties.PURPOSE_SIGN|KeyProperties.PURPOSE_DECRYPT)
.setKeySize(1024)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
.setUserAuthenticationRequired(useFinger)
.build();
kpg.initialize(spec);
KeyPair keyPair = kpg.generateKeyPair();
PublicKey pubKey = keyPair.getPublic();
PrivateKey priKey = keyPair.getPrivate();
上面是代码片段