Android 使用KeyGenParameterSpec生密钥指定了keySize是1024,但生出的公钥是2048? 5C

问题描述:
在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();

上面是代码片段

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问