jr_T 2019-03-04 15:58 采纳率: 0%
浏览 1100
已结题

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

问题描述:
在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条回答 默认 最新

  • devmiao 2019-03-04 23:52
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 CSS实现渐隐虚线框
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容